package com.logicfishsoftware.plugbench.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import com.logicfishsoftware.plugbench.services.WPPlugBenchGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
@SuppressWarnings("all")
public class InternalWPPlugBenchParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'import'", "'plugin'", "'library'", "'title'", "'version'", "'pluginURI'", "'description'", "'author'", "'skin'", "'include'", "'script'", "'css'", "'admin-script'", "'admin-css'", "'wp-plugin'", "'wp-theme'", "'page'", "'{'", "'}'", "'options'", "'options-page'", "'site'", "'string'", "'text'", "'url'", "'integer'", "'float'", "'range'", "'select'", "'choice'", "'boolean'", "'date'", "'colour'", "'color'", "'custom'", "'('", "','", "')'", "'default'", "'='", "'html'", "'max'", "'min'", "'className'", "'action'", "'filter'", "'activation'", "'deactivation'", "'uninstall'", "'shortcode'"
    };
    public static final int RULE_ID=5;
    public static final int T__29=29;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=10;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int T__60=60;
    public static final int EOF=-1;
    public static final int T__55=55;
    public static final int T__56=56;
    public static final int T__19=19;
    public static final int T__57=57;
    public static final int T__58=58;
    public static final int T__51=51;
    public static final int T__16=16;
    public static final int T__52=52;
    public static final int T__15=15;
    public static final int T__53=53;
    public static final int T__18=18;
    public static final int T__54=54;
    public static final int T__17=17;
    public static final int T__12=12;
    public static final int T__11=11;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int T__59=59;
    public static final int RULE_INT=6;
    public static final int T__50=50;
    public static final int T__42=42;
    public static final int T__43=43;
    public static final int T__40=40;
    public static final int T__41=41;
    public static final int T__46=46;
    public static final int T__47=47;
    public static final int T__44=44;
    public static final int T__45=45;
    public static final int T__48=48;
    public static final int T__49=49;
    public static final int RULE_SL_COMMENT=8;
    public static final int RULE_ML_COMMENT=7;
    public static final int T__30=30;
    public static final int T__31=31;
    public static final int RULE_STRING=4;
    public static final int T__32=32;
    public static final int T__33=33;
    public static final int T__34=34;
    public static final int T__35=35;
    public static final int T__36=36;
    public static final int T__37=37;
    public static final int T__38=38;
    public static final int T__39=39;
    public static final int RULE_WS=9;

    // delegates
    // delegators


        public InternalWPPlugBenchParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalWPPlugBenchParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalWPPlugBenchParser.tokenNames; }
    public String getGrammarFileName() { return "../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g"; }



    /*
      This grammar contains a lot of empty actions to work around a bug in ANTLR.
      Otherwise the ANTLR tool will create synpreds that cannot be compiled in some rare cases.
    */
     
     	private WPPlugBenchGrammarAccess grammarAccess;
     	
        public InternalWPPlugBenchParser(TokenStream input, WPPlugBenchGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "Plugin";	
       	}
       	
       	@Override
       	protected WPPlugBenchGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRulePlugin"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:73:1: entryRulePlugin returns [EObject current=null] : iv_rulePlugin= rulePlugin EOF ;
    public final EObject entryRulePlugin() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePlugin = null;


        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:74:2: (iv_rulePlugin= rulePlugin EOF )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:75:2: iv_rulePlugin= rulePlugin EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPluginRule()); 
            }
            pushFollow(FOLLOW_rulePlugin_in_entryRulePlugin81);
            iv_rulePlugin=rulePlugin();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePlugin; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRulePlugin91); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePlugin"


    // $ANTLR start "rulePlugin"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:82:1: rulePlugin returns [EObject current=null] : ( (otherlv_0= 'import' ( (lv_imports_1_0= RULE_STRING ) ) )* ( ( (lv_type_2_1= 'plugin' | lv_type_2_2= 'library' ) ) ) ( (lv_name_3_0= RULE_ID ) ) ( (lv_platform_4_0= rulePlatform ) )? otherlv_5= 'title' ( (lv_title_6_0= RULE_STRING ) ) (otherlv_7= 'version' ( (lv_version_8_0= RULE_STRING ) ) )? (otherlv_9= 'pluginURI' ( (lv_pluginURI_10_0= RULE_STRING ) ) )? (otherlv_11= 'description' ( (lv_description_12_0= RULE_STRING ) ) )? (otherlv_13= 'author' ( (lv_author_14_0= RULE_STRING ) ) )? (otherlv_15= 'skin' ( (lv_skin_16_0= RULE_STRING ) ) )? (otherlv_17= 'include' ( (lv_include_18_0= RULE_STRING ) )+ )? (otherlv_19= 'script' ( (lv_script_20_0= RULE_STRING ) )+ )? (otherlv_21= 'css' ( (lv_css_22_0= RULE_STRING ) )+ )? (otherlv_23= 'admin-script' ( (lv_script_24_0= RULE_STRING ) )+ )? (otherlv_25= 'admin-css' ( (lv_adminCSS_26_0= RULE_STRING ) )+ )? ( (lv_options_27_0= ruleOptions ) )? ( (lv_optionsPage_28_0= ruleOptionsPage ) )* ( (lv_adminPages_29_0= ruleAdminPage ) )* ( (lv_functions_30_0= ruleFunction ) )* ) ;
    public final EObject rulePlugin() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_imports_1_0=null;
        Token lv_type_2_1=null;
        Token lv_type_2_2=null;
        Token lv_name_3_0=null;
        Token otherlv_5=null;
        Token lv_title_6_0=null;
        Token otherlv_7=null;
        Token lv_version_8_0=null;
        Token otherlv_9=null;
        Token lv_pluginURI_10_0=null;
        Token otherlv_11=null;
        Token lv_description_12_0=null;
        Token otherlv_13=null;
        Token lv_author_14_0=null;
        Token otherlv_15=null;
        Token lv_skin_16_0=null;
        Token otherlv_17=null;
        Token lv_include_18_0=null;
        Token otherlv_19=null;
        Token lv_script_20_0=null;
        Token otherlv_21=null;
        Token lv_css_22_0=null;
        Token otherlv_23=null;
        Token lv_script_24_0=null;
        Token otherlv_25=null;
        Token lv_adminCSS_26_0=null;
        AntlrDatatypeRuleToken lv_platform_4_0 = null;

        EObject lv_options_27_0 = null;

        EObject lv_optionsPage_28_0 = null;

        EObject lv_adminPages_29_0 = null;

        EObject lv_functions_30_0 = null;


         enterRule(); 
            
        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:85:28: ( ( (otherlv_0= 'import' ( (lv_imports_1_0= RULE_STRING ) ) )* ( ( (lv_type_2_1= 'plugin' | lv_type_2_2= 'library' ) ) ) ( (lv_name_3_0= RULE_ID ) ) ( (lv_platform_4_0= rulePlatform ) )? otherlv_5= 'title' ( (lv_title_6_0= RULE_STRING ) ) (otherlv_7= 'version' ( (lv_version_8_0= RULE_STRING ) ) )? (otherlv_9= 'pluginURI' ( (lv_pluginURI_10_0= RULE_STRING ) ) )? (otherlv_11= 'description' ( (lv_description_12_0= RULE_STRING ) ) )? (otherlv_13= 'author' ( (lv_author_14_0= RULE_STRING ) ) )? (otherlv_15= 'skin' ( (lv_skin_16_0= RULE_STRING ) ) )? (otherlv_17= 'include' ( (lv_include_18_0= RULE_STRING ) )+ )? (otherlv_19= 'script' ( (lv_script_20_0= RULE_STRING ) )+ )? (otherlv_21= 'css' ( (lv_css_22_0= RULE_STRING ) )+ )? (otherlv_23= 'admin-script' ( (lv_script_24_0= RULE_STRING ) )+ )? (otherlv_25= 'admin-css' ( (lv_adminCSS_26_0= RULE_STRING ) )+ )? ( (lv_options_27_0= ruleOptions ) )? ( (lv_optionsPage_28_0= ruleOptionsPage ) )* ( (lv_adminPages_29_0= ruleAdminPage ) )* ( (lv_functions_30_0= ruleFunction ) )* ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:86:1: ( (otherlv_0= 'import' ( (lv_imports_1_0= RULE_STRING ) ) )* ( ( (lv_type_2_1= 'plugin' | lv_type_2_2= 'library' ) ) ) ( (lv_name_3_0= RULE_ID ) ) ( (lv_platform_4_0= rulePlatform ) )? otherlv_5= 'title' ( (lv_title_6_0= RULE_STRING ) ) (otherlv_7= 'version' ( (lv_version_8_0= RULE_STRING ) ) )? (otherlv_9= 'pluginURI' ( (lv_pluginURI_10_0= RULE_STRING ) ) )? (otherlv_11= 'description' ( (lv_description_12_0= RULE_STRING ) ) )? (otherlv_13= 'author' ( (lv_author_14_0= RULE_STRING ) ) )? (otherlv_15= 'skin' ( (lv_skin_16_0= RULE_STRING ) ) )? (otherlv_17= 'include' ( (lv_include_18_0= RULE_STRING ) )+ )? (otherlv_19= 'script' ( (lv_script_20_0= RULE_STRING ) )+ )? (otherlv_21= 'css' ( (lv_css_22_0= RULE_STRING ) )+ )? (otherlv_23= 'admin-script' ( (lv_script_24_0= RULE_STRING ) )+ )? (otherlv_25= 'admin-css' ( (lv_adminCSS_26_0= RULE_STRING ) )+ )? ( (lv_options_27_0= ruleOptions ) )? ( (lv_optionsPage_28_0= ruleOptionsPage ) )* ( (lv_adminPages_29_0= ruleAdminPage ) )* ( (lv_functions_30_0= ruleFunction ) )* )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:86:1: ( (otherlv_0= 'import' ( (lv_imports_1_0= RULE_STRING ) ) )* ( ( (lv_type_2_1= 'plugin' | lv_type_2_2= 'library' ) ) ) ( (lv_name_3_0= RULE_ID ) ) ( (lv_platform_4_0= rulePlatform ) )? otherlv_5= 'title' ( (lv_title_6_0= RULE_STRING ) ) (otherlv_7= 'version' ( (lv_version_8_0= RULE_STRING ) ) )? (otherlv_9= 'pluginURI' ( (lv_pluginURI_10_0= RULE_STRING ) ) )? (otherlv_11= 'description' ( (lv_description_12_0= RULE_STRING ) ) )? (otherlv_13= 'author' ( (lv_author_14_0= RULE_STRING ) ) )? (otherlv_15= 'skin' ( (lv_skin_16_0= RULE_STRING ) ) )? (otherlv_17= 'include' ( (lv_include_18_0= RULE_STRING ) )+ )? (otherlv_19= 'script' ( (lv_script_20_0= RULE_STRING ) )+ )? (otherlv_21= 'css' ( (lv_css_22_0= RULE_STRING ) )+ )? (otherlv_23= 'admin-script' ( (lv_script_24_0= RULE_STRING ) )+ )? (otherlv_25= 'admin-css' ( (lv_adminCSS_26_0= RULE_STRING ) )+ )? ( (lv_options_27_0= ruleOptions ) )? ( (lv_optionsPage_28_0= ruleOptionsPage ) )* ( (lv_adminPages_29_0= ruleAdminPage ) )* ( (lv_functions_30_0= ruleFunction ) )* )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:86:2: (otherlv_0= 'import' ( (lv_imports_1_0= RULE_STRING ) ) )* ( ( (lv_type_2_1= 'plugin' | lv_type_2_2= 'library' ) ) ) ( (lv_name_3_0= RULE_ID ) ) ( (lv_platform_4_0= rulePlatform ) )? otherlv_5= 'title' ( (lv_title_6_0= RULE_STRING ) ) (otherlv_7= 'version' ( (lv_version_8_0= RULE_STRING ) ) )? (otherlv_9= 'pluginURI' ( (lv_pluginURI_10_0= RULE_STRING ) ) )? (otherlv_11= 'description' ( (lv_description_12_0= RULE_STRING ) ) )? (otherlv_13= 'author' ( (lv_author_14_0= RULE_STRING ) ) )? (otherlv_15= 'skin' ( (lv_skin_16_0= RULE_STRING ) ) )? (otherlv_17= 'include' ( (lv_include_18_0= RULE_STRING ) )+ )? (otherlv_19= 'script' ( (lv_script_20_0= RULE_STRING ) )+ )? (otherlv_21= 'css' ( (lv_css_22_0= RULE_STRING ) )+ )? (otherlv_23= 'admin-script' ( (lv_script_24_0= RULE_STRING ) )+ )? (otherlv_25= 'admin-css' ( (lv_adminCSS_26_0= RULE_STRING ) )+ )? ( (lv_options_27_0= ruleOptions ) )? ( (lv_optionsPage_28_0= ruleOptionsPage ) )* ( (lv_adminPages_29_0= ruleAdminPage ) )* ( (lv_functions_30_0= ruleFunction ) )*
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:86:2: (otherlv_0= 'import' ( (lv_imports_1_0= RULE_STRING ) ) )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==11) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:86:4: otherlv_0= 'import' ( (lv_imports_1_0= RULE_STRING ) )
            	    {
            	    otherlv_0=(Token)match(input,11,FOLLOW_11_in_rulePlugin129); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_0, grammarAccess.getPluginAccess().getImportKeyword_0_0());
            	          
            	    }
            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:90:1: ( (lv_imports_1_0= RULE_STRING ) )
            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:91:1: (lv_imports_1_0= RULE_STRING )
            	    {
            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:91:1: (lv_imports_1_0= RULE_STRING )
            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:92:3: lv_imports_1_0= RULE_STRING
            	    {
            	    lv_imports_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePlugin146); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      			newLeafNode(lv_imports_1_0, grammarAccess.getPluginAccess().getImportsSTRINGTerminalRuleCall_0_1_0()); 
            	      		
            	    }
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElement(grammarAccess.getPluginRule());
            	      	        }
            	             		addWithLastConsumed(
            	             			current, 
            	             			"imports",
            	              		lv_imports_1_0, 
            	              		"STRING");
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:108:4: ( ( (lv_type_2_1= 'plugin' | lv_type_2_2= 'library' ) ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:109:1: ( (lv_type_2_1= 'plugin' | lv_type_2_2= 'library' ) )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:109:1: ( (lv_type_2_1= 'plugin' | lv_type_2_2= 'library' ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:110:1: (lv_type_2_1= 'plugin' | lv_type_2_2= 'library' )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:110:1: (lv_type_2_1= 'plugin' | lv_type_2_2= 'library' )
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0==12) ) {
                alt2=1;
            }
            else if ( (LA2_0==13) ) {
                alt2=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 2, 0, input);

                throw nvae;
            }
            switch (alt2) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:111:3: lv_type_2_1= 'plugin'
                    {
                    lv_type_2_1=(Token)match(input,12,FOLLOW_12_in_rulePlugin173); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_type_2_1, grammarAccess.getPluginAccess().getTypePluginKeyword_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getPluginRule());
                      	        }
                             		setWithLastConsumed(current, "type", lv_type_2_1, null);
                      	    
                    }

                    }
                    break;
                case 2 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:123:8: lv_type_2_2= 'library'
                    {
                    lv_type_2_2=(Token)match(input,13,FOLLOW_13_in_rulePlugin202); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_type_2_2, grammarAccess.getPluginAccess().getTypeLibraryKeyword_1_0_1());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getPluginRule());
                      	        }
                             		setWithLastConsumed(current, "type", lv_type_2_2, null);
                      	    
                    }

                    }
                    break;

            }


            }


            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:138:2: ( (lv_name_3_0= RULE_ID ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:139:1: (lv_name_3_0= RULE_ID )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:139:1: (lv_name_3_0= RULE_ID )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:140:3: lv_name_3_0= RULE_ID
            {
            lv_name_3_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePlugin235); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_3_0, grammarAccess.getPluginAccess().getNameIDTerminalRuleCall_2_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getPluginRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_3_0, 
                      		"ID");
              	    
            }

            }


            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:156:2: ( (lv_platform_4_0= rulePlatform ) )?
            int alt3=2;
            int LA3_0 = input.LA(1);

            if ( ((LA3_0>=25 && LA3_0<=26)) ) {
                alt3=1;
            }
            switch (alt3) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:157:1: (lv_platform_4_0= rulePlatform )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:157:1: (lv_platform_4_0= rulePlatform )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:158:3: lv_platform_4_0= rulePlatform
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getPluginAccess().getPlatformPlatformParserRuleCall_3_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_rulePlatform_in_rulePlugin261);
                    lv_platform_4_0=rulePlatform();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getPluginRule());
                      	        }
                             		set(
                             			current, 
                             			"platform",
                              		lv_platform_4_0, 
                              		"Platform");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            otherlv_5=(Token)match(input,14,FOLLOW_14_in_rulePlugin274); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_5, grammarAccess.getPluginAccess().getTitleKeyword_4());
                  
            }
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:178:1: ( (lv_title_6_0= RULE_STRING ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:179:1: (lv_title_6_0= RULE_STRING )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:179:1: (lv_title_6_0= RULE_STRING )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:180:3: lv_title_6_0= RULE_STRING
            {
            lv_title_6_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePlugin291); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_title_6_0, grammarAccess.getPluginAccess().getTitleSTRINGTerminalRuleCall_5_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getPluginRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"title",
                      		lv_title_6_0, 
                      		"STRING");
              	    
            }

            }


            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:196:2: (otherlv_7= 'version' ( (lv_version_8_0= RULE_STRING ) ) )?
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==15) ) {
                alt4=1;
            }
            switch (alt4) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:196:4: otherlv_7= 'version' ( (lv_version_8_0= RULE_STRING ) )
                    {
                    otherlv_7=(Token)match(input,15,FOLLOW_15_in_rulePlugin309); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_7, grammarAccess.getPluginAccess().getVersionKeyword_6_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:200:1: ( (lv_version_8_0= RULE_STRING ) )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:201:1: (lv_version_8_0= RULE_STRING )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:201:1: (lv_version_8_0= RULE_STRING )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:202:3: lv_version_8_0= RULE_STRING
                    {
                    lv_version_8_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePlugin326); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_version_8_0, grammarAccess.getPluginAccess().getVersionSTRINGTerminalRuleCall_6_1_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getPluginRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"version",
                              		lv_version_8_0, 
                              		"STRING");
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:218:4: (otherlv_9= 'pluginURI' ( (lv_pluginURI_10_0= RULE_STRING ) ) )?
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==16) ) {
                alt5=1;
            }
            switch (alt5) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:218:6: otherlv_9= 'pluginURI' ( (lv_pluginURI_10_0= RULE_STRING ) )
                    {
                    otherlv_9=(Token)match(input,16,FOLLOW_16_in_rulePlugin346); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_9, grammarAccess.getPluginAccess().getPluginURIKeyword_7_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:222:1: ( (lv_pluginURI_10_0= RULE_STRING ) )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:223:1: (lv_pluginURI_10_0= RULE_STRING )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:223:1: (lv_pluginURI_10_0= RULE_STRING )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:224:3: lv_pluginURI_10_0= RULE_STRING
                    {
                    lv_pluginURI_10_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePlugin363); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_pluginURI_10_0, grammarAccess.getPluginAccess().getPluginURISTRINGTerminalRuleCall_7_1_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getPluginRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"pluginURI",
                              		lv_pluginURI_10_0, 
                              		"STRING");
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:240:4: (otherlv_11= 'description' ( (lv_description_12_0= RULE_STRING ) ) )?
            int alt6=2;
            int LA6_0 = input.LA(1);

            if ( (LA6_0==17) ) {
                alt6=1;
            }
            switch (alt6) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:240:6: otherlv_11= 'description' ( (lv_description_12_0= RULE_STRING ) )
                    {
                    otherlv_11=(Token)match(input,17,FOLLOW_17_in_rulePlugin383); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_11, grammarAccess.getPluginAccess().getDescriptionKeyword_8_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:244:1: ( (lv_description_12_0= RULE_STRING ) )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:245:1: (lv_description_12_0= RULE_STRING )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:245:1: (lv_description_12_0= RULE_STRING )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:246:3: lv_description_12_0= RULE_STRING
                    {
                    lv_description_12_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePlugin400); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_description_12_0, grammarAccess.getPluginAccess().getDescriptionSTRINGTerminalRuleCall_8_1_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getPluginRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"description",
                              		lv_description_12_0, 
                              		"STRING");
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:262:4: (otherlv_13= 'author' ( (lv_author_14_0= RULE_STRING ) ) )?
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( (LA7_0==18) ) {
                alt7=1;
            }
            switch (alt7) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:262:6: otherlv_13= 'author' ( (lv_author_14_0= RULE_STRING ) )
                    {
                    otherlv_13=(Token)match(input,18,FOLLOW_18_in_rulePlugin420); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_13, grammarAccess.getPluginAccess().getAuthorKeyword_9_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:266:1: ( (lv_author_14_0= RULE_STRING ) )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:267:1: (lv_author_14_0= RULE_STRING )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:267:1: (lv_author_14_0= RULE_STRING )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:268:3: lv_author_14_0= RULE_STRING
                    {
                    lv_author_14_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePlugin437); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_author_14_0, grammarAccess.getPluginAccess().getAuthorSTRINGTerminalRuleCall_9_1_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getPluginRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"author",
                              		lv_author_14_0, 
                              		"STRING");
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:284:4: (otherlv_15= 'skin' ( (lv_skin_16_0= RULE_STRING ) ) )?
            int alt8=2;
            int LA8_0 = input.LA(1);

            if ( (LA8_0==19) ) {
                alt8=1;
            }
            switch (alt8) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:284:6: otherlv_15= 'skin' ( (lv_skin_16_0= RULE_STRING ) )
                    {
                    otherlv_15=(Token)match(input,19,FOLLOW_19_in_rulePlugin457); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_15, grammarAccess.getPluginAccess().getSkinKeyword_10_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:288:1: ( (lv_skin_16_0= RULE_STRING ) )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:289:1: (lv_skin_16_0= RULE_STRING )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:289:1: (lv_skin_16_0= RULE_STRING )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:290:3: lv_skin_16_0= RULE_STRING
                    {
                    lv_skin_16_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePlugin474); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_skin_16_0, grammarAccess.getPluginAccess().getSkinSTRINGTerminalRuleCall_10_1_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getPluginRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"skin",
                              		lv_skin_16_0, 
                              		"STRING");
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:306:4: (otherlv_17= 'include' ( (lv_include_18_0= RULE_STRING ) )+ )?
            int alt10=2;
            int LA10_0 = input.LA(1);

            if ( (LA10_0==20) ) {
                alt10=1;
            }
            switch (alt10) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:306:6: otherlv_17= 'include' ( (lv_include_18_0= RULE_STRING ) )+
                    {
                    otherlv_17=(Token)match(input,20,FOLLOW_20_in_rulePlugin494); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_17, grammarAccess.getPluginAccess().getIncludeKeyword_11_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:310:1: ( (lv_include_18_0= RULE_STRING ) )+
                    int cnt9=0;
                    loop9:
                    do {
                        int alt9=2;
                        int LA9_0 = input.LA(1);

                        if ( (LA9_0==RULE_STRING) ) {
                            alt9=1;
                        }


                        switch (alt9) {
                    	case 1 :
                    	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:311:1: (lv_include_18_0= RULE_STRING )
                    	    {
                    	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:311:1: (lv_include_18_0= RULE_STRING )
                    	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:312:3: lv_include_18_0= RULE_STRING
                    	    {
                    	    lv_include_18_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePlugin511); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      			newLeafNode(lv_include_18_0, grammarAccess.getPluginAccess().getIncludeSTRINGTerminalRuleCall_11_1_0()); 
                    	      		
                    	    }
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElement(grammarAccess.getPluginRule());
                    	      	        }
                    	             		addWithLastConsumed(
                    	             			current, 
                    	             			"include",
                    	              		lv_include_18_0, 
                    	              		"STRING");
                    	      	    
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt9 >= 1 ) break loop9;
                    	    if (state.backtracking>0) {state.failed=true; return current;}
                                EarlyExitException eee =
                                    new EarlyExitException(9, input);
                                throw eee;
                        }
                        cnt9++;
                    } while (true);


                    }
                    break;

            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:328:5: (otherlv_19= 'script' ( (lv_script_20_0= RULE_STRING ) )+ )?
            int alt12=2;
            int LA12_0 = input.LA(1);

            if ( (LA12_0==21) ) {
                alt12=1;
            }
            switch (alt12) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:328:7: otherlv_19= 'script' ( (lv_script_20_0= RULE_STRING ) )+
                    {
                    otherlv_19=(Token)match(input,21,FOLLOW_21_in_rulePlugin532); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_19, grammarAccess.getPluginAccess().getScriptKeyword_12_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:332:1: ( (lv_script_20_0= RULE_STRING ) )+
                    int cnt11=0;
                    loop11:
                    do {
                        int alt11=2;
                        int LA11_0 = input.LA(1);

                        if ( (LA11_0==RULE_STRING) ) {
                            alt11=1;
                        }


                        switch (alt11) {
                    	case 1 :
                    	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:333:1: (lv_script_20_0= RULE_STRING )
                    	    {
                    	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:333:1: (lv_script_20_0= RULE_STRING )
                    	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:334:3: lv_script_20_0= RULE_STRING
                    	    {
                    	    lv_script_20_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePlugin549); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      			newLeafNode(lv_script_20_0, grammarAccess.getPluginAccess().getScriptSTRINGTerminalRuleCall_12_1_0()); 
                    	      		
                    	    }
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElement(grammarAccess.getPluginRule());
                    	      	        }
                    	             		addWithLastConsumed(
                    	             			current, 
                    	             			"script",
                    	              		lv_script_20_0, 
                    	              		"STRING");
                    	      	    
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt11 >= 1 ) break loop11;
                    	    if (state.backtracking>0) {state.failed=true; return current;}
                                EarlyExitException eee =
                                    new EarlyExitException(11, input);
                                throw eee;
                        }
                        cnt11++;
                    } while (true);


                    }
                    break;

            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:350:5: (otherlv_21= 'css' ( (lv_css_22_0= RULE_STRING ) )+ )?
            int alt14=2;
            int LA14_0 = input.LA(1);

            if ( (LA14_0==22) ) {
                alt14=1;
            }
            switch (alt14) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:350:7: otherlv_21= 'css' ( (lv_css_22_0= RULE_STRING ) )+
                    {
                    otherlv_21=(Token)match(input,22,FOLLOW_22_in_rulePlugin570); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_21, grammarAccess.getPluginAccess().getCssKeyword_13_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:354:1: ( (lv_css_22_0= RULE_STRING ) )+
                    int cnt13=0;
                    loop13:
                    do {
                        int alt13=2;
                        int LA13_0 = input.LA(1);

                        if ( (LA13_0==RULE_STRING) ) {
                            alt13=1;
                        }


                        switch (alt13) {
                    	case 1 :
                    	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:355:1: (lv_css_22_0= RULE_STRING )
                    	    {
                    	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:355:1: (lv_css_22_0= RULE_STRING )
                    	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:356:3: lv_css_22_0= RULE_STRING
                    	    {
                    	    lv_css_22_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePlugin587); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      			newLeafNode(lv_css_22_0, grammarAccess.getPluginAccess().getCssSTRINGTerminalRuleCall_13_1_0()); 
                    	      		
                    	    }
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElement(grammarAccess.getPluginRule());
                    	      	        }
                    	             		addWithLastConsumed(
                    	             			current, 
                    	             			"css",
                    	              		lv_css_22_0, 
                    	              		"STRING");
                    	      	    
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt13 >= 1 ) break loop13;
                    	    if (state.backtracking>0) {state.failed=true; return current;}
                                EarlyExitException eee =
                                    new EarlyExitException(13, input);
                                throw eee;
                        }
                        cnt13++;
                    } while (true);


                    }
                    break;

            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:372:5: (otherlv_23= 'admin-script' ( (lv_script_24_0= RULE_STRING ) )+ )?
            int alt16=2;
            int LA16_0 = input.LA(1);

            if ( (LA16_0==23) ) {
                alt16=1;
            }
            switch (alt16) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:372:7: otherlv_23= 'admin-script' ( (lv_script_24_0= RULE_STRING ) )+
                    {
                    otherlv_23=(Token)match(input,23,FOLLOW_23_in_rulePlugin608); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_23, grammarAccess.getPluginAccess().getAdminScriptKeyword_14_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:376:1: ( (lv_script_24_0= RULE_STRING ) )+
                    int cnt15=0;
                    loop15:
                    do {
                        int alt15=2;
                        int LA15_0 = input.LA(1);

                        if ( (LA15_0==RULE_STRING) ) {
                            alt15=1;
                        }


                        switch (alt15) {
                    	case 1 :
                    	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:377:1: (lv_script_24_0= RULE_STRING )
                    	    {
                    	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:377:1: (lv_script_24_0= RULE_STRING )
                    	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:378:3: lv_script_24_0= RULE_STRING
                    	    {
                    	    lv_script_24_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePlugin625); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      			newLeafNode(lv_script_24_0, grammarAccess.getPluginAccess().getScriptSTRINGTerminalRuleCall_14_1_0()); 
                    	      		
                    	    }
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElement(grammarAccess.getPluginRule());
                    	      	        }
                    	             		addWithLastConsumed(
                    	             			current, 
                    	             			"script",
                    	              		lv_script_24_0, 
                    	              		"STRING");
                    	      	    
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt15 >= 1 ) break loop15;
                    	    if (state.backtracking>0) {state.failed=true; return current;}
                                EarlyExitException eee =
                                    new EarlyExitException(15, input);
                                throw eee;
                        }
                        cnt15++;
                    } while (true);


                    }
                    break;

            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:394:5: (otherlv_25= 'admin-css' ( (lv_adminCSS_26_0= RULE_STRING ) )+ )?
            int alt18=2;
            int LA18_0 = input.LA(1);

            if ( (LA18_0==24) ) {
                alt18=1;
            }
            switch (alt18) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:394:7: otherlv_25= 'admin-css' ( (lv_adminCSS_26_0= RULE_STRING ) )+
                    {
                    otherlv_25=(Token)match(input,24,FOLLOW_24_in_rulePlugin646); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_25, grammarAccess.getPluginAccess().getAdminCssKeyword_15_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:398:1: ( (lv_adminCSS_26_0= RULE_STRING ) )+
                    int cnt17=0;
                    loop17:
                    do {
                        int alt17=2;
                        int LA17_0 = input.LA(1);

                        if ( (LA17_0==RULE_STRING) ) {
                            alt17=1;
                        }


                        switch (alt17) {
                    	case 1 :
                    	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:399:1: (lv_adminCSS_26_0= RULE_STRING )
                    	    {
                    	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:399:1: (lv_adminCSS_26_0= RULE_STRING )
                    	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:400:3: lv_adminCSS_26_0= RULE_STRING
                    	    {
                    	    lv_adminCSS_26_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePlugin663); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      			newLeafNode(lv_adminCSS_26_0, grammarAccess.getPluginAccess().getAdminCSSSTRINGTerminalRuleCall_15_1_0()); 
                    	      		
                    	    }
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElement(grammarAccess.getPluginRule());
                    	      	        }
                    	             		addWithLastConsumed(
                    	             			current, 
                    	             			"adminCSS",
                    	              		lv_adminCSS_26_0, 
                    	              		"STRING");
                    	      	    
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt17 >= 1 ) break loop17;
                    	    if (state.backtracking>0) {state.failed=true; return current;}
                                EarlyExitException eee =
                                    new EarlyExitException(17, input);
                                throw eee;
                        }
                        cnt17++;
                    } while (true);


                    }
                    break;

            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:416:5: ( (lv_options_27_0= ruleOptions ) )?
            int alt19=2;
            int LA19_0 = input.LA(1);

            if ( (LA19_0==30) ) {
                alt19=1;
            }
            switch (alt19) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:417:1: (lv_options_27_0= ruleOptions )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:417:1: (lv_options_27_0= ruleOptions )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:418:3: lv_options_27_0= ruleOptions
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getPluginAccess().getOptionsOptionsParserRuleCall_16_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleOptions_in_rulePlugin692);
                    lv_options_27_0=ruleOptions();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getPluginRule());
                      	        }
                             		set(
                             			current, 
                             			"options",
                              		lv_options_27_0, 
                              		"Options");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:434:3: ( (lv_optionsPage_28_0= ruleOptionsPage ) )*
            loop20:
            do {
                int alt20=2;
                int LA20_0 = input.LA(1);

                if ( (LA20_0==31) ) {
                    alt20=1;
                }


                switch (alt20) {
            	case 1 :
            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:435:1: (lv_optionsPage_28_0= ruleOptionsPage )
            	    {
            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:435:1: (lv_optionsPage_28_0= ruleOptionsPage )
            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:436:3: lv_optionsPage_28_0= ruleOptionsPage
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getPluginAccess().getOptionsPageOptionsPageParserRuleCall_17_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleOptionsPage_in_rulePlugin714);
            	    lv_optionsPage_28_0=ruleOptionsPage();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getPluginRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"optionsPage",
            	              		lv_optionsPage_28_0, 
            	              		"OptionsPage");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop20;
                }
            } while (true);

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:452:3: ( (lv_adminPages_29_0= ruleAdminPage ) )*
            loop21:
            do {
                int alt21=2;
                int LA21_0 = input.LA(1);

                if ( (LA21_0==27) ) {
                    alt21=1;
                }


                switch (alt21) {
            	case 1 :
            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:453:1: (lv_adminPages_29_0= ruleAdminPage )
            	    {
            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:453:1: (lv_adminPages_29_0= ruleAdminPage )
            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:454:3: lv_adminPages_29_0= ruleAdminPage
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getPluginAccess().getAdminPagesAdminPageParserRuleCall_18_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleAdminPage_in_rulePlugin736);
            	    lv_adminPages_29_0=ruleAdminPage();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getPluginRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"adminPages",
            	              		lv_adminPages_29_0, 
            	              		"AdminPage");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop21;
                }
            } while (true);

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:470:3: ( (lv_functions_30_0= ruleFunction ) )*
            loop22:
            do {
                int alt22=2;
                int LA22_0 = input.LA(1);

                if ( ((LA22_0>=55 && LA22_0<=60)) ) {
                    alt22=1;
                }


                switch (alt22) {
            	case 1 :
            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:471:1: (lv_functions_30_0= ruleFunction )
            	    {
            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:471:1: (lv_functions_30_0= ruleFunction )
            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:472:3: lv_functions_30_0= ruleFunction
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getPluginAccess().getFunctionsFunctionParserRuleCall_19_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleFunction_in_rulePlugin758);
            	    lv_functions_30_0=ruleFunction();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getPluginRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"functions",
            	              		lv_functions_30_0, 
            	              		"Function");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop22;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePlugin"


    // $ANTLR start "entryRulePlatform"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:496:1: entryRulePlatform returns [String current=null] : iv_rulePlatform= rulePlatform EOF ;
    public final String entryRulePlatform() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_rulePlatform = null;


        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:497:2: (iv_rulePlatform= rulePlatform EOF )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:498:2: iv_rulePlatform= rulePlatform EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPlatformRule()); 
            }
            pushFollow(FOLLOW_rulePlatform_in_entryRulePlatform796);
            iv_rulePlatform=rulePlatform();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePlatform.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRulePlatform807); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePlatform"


    // $ANTLR start "rulePlatform"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:505:1: rulePlatform returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'wp-plugin' | kw= 'wp-theme' ) ;
    public final AntlrDatatypeRuleToken rulePlatform() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:508:28: ( (kw= 'wp-plugin' | kw= 'wp-theme' ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:509:1: (kw= 'wp-plugin' | kw= 'wp-theme' )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:509:1: (kw= 'wp-plugin' | kw= 'wp-theme' )
            int alt23=2;
            int LA23_0 = input.LA(1);

            if ( (LA23_0==25) ) {
                alt23=1;
            }
            else if ( (LA23_0==26) ) {
                alt23=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 23, 0, input);

                throw nvae;
            }
            switch (alt23) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:510:2: kw= 'wp-plugin'
                    {
                    kw=(Token)match(input,25,FOLLOW_25_in_rulePlatform845); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getPlatformAccess().getWpPluginKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:517:2: kw= 'wp-theme'
                    {
                    kw=(Token)match(input,26,FOLLOW_26_in_rulePlatform864); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getPlatformAccess().getWpThemeKeyword_1()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePlatform"


    // $ANTLR start "entryRuleAdminPage"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:530:1: entryRuleAdminPage returns [EObject current=null] : iv_ruleAdminPage= ruleAdminPage EOF ;
    public final EObject entryRuleAdminPage() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAdminPage = null;


        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:531:2: (iv_ruleAdminPage= ruleAdminPage EOF )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:532:2: iv_ruleAdminPage= ruleAdminPage EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getAdminPageRule()); 
            }
            pushFollow(FOLLOW_ruleAdminPage_in_entryRuleAdminPage904);
            iv_ruleAdminPage=ruleAdminPage();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAdminPage; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleAdminPage914); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAdminPage"


    // $ANTLR start "ruleAdminPage"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:539:1: ruleAdminPage returns [EObject current=null] : (otherlv_0= 'page' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' otherlv_3= 'title' ( (lv_title_4_0= RULE_STRING ) ) (otherlv_5= 'description' ( (lv_description_6_0= RULE_STRING ) ) )? otherlv_7= '}' ) ;
    public final EObject ruleAdminPage() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token lv_title_4_0=null;
        Token otherlv_5=null;
        Token lv_description_6_0=null;
        Token otherlv_7=null;

         enterRule(); 
            
        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:542:28: ( (otherlv_0= 'page' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' otherlv_3= 'title' ( (lv_title_4_0= RULE_STRING ) ) (otherlv_5= 'description' ( (lv_description_6_0= RULE_STRING ) ) )? otherlv_7= '}' ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:543:1: (otherlv_0= 'page' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' otherlv_3= 'title' ( (lv_title_4_0= RULE_STRING ) ) (otherlv_5= 'description' ( (lv_description_6_0= RULE_STRING ) ) )? otherlv_7= '}' )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:543:1: (otherlv_0= 'page' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' otherlv_3= 'title' ( (lv_title_4_0= RULE_STRING ) ) (otherlv_5= 'description' ( (lv_description_6_0= RULE_STRING ) ) )? otherlv_7= '}' )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:543:3: otherlv_0= 'page' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' otherlv_3= 'title' ( (lv_title_4_0= RULE_STRING ) ) (otherlv_5= 'description' ( (lv_description_6_0= RULE_STRING ) ) )? otherlv_7= '}'
            {
            otherlv_0=(Token)match(input,27,FOLLOW_27_in_ruleAdminPage951); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getAdminPageAccess().getPageKeyword_0());
                  
            }
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:547:1: ( (lv_name_1_0= RULE_ID ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:548:1: (lv_name_1_0= RULE_ID )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:548:1: (lv_name_1_0= RULE_ID )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:549:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAdminPage968); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_1_0, grammarAccess.getAdminPageAccess().getNameIDTerminalRuleCall_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getAdminPageRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"ID");
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,28,FOLLOW_28_in_ruleAdminPage985); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getAdminPageAccess().getLeftCurlyBracketKeyword_2());
                  
            }
            otherlv_3=(Token)match(input,14,FOLLOW_14_in_ruleAdminPage997); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getAdminPageAccess().getTitleKeyword_3());
                  
            }
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:573:1: ( (lv_title_4_0= RULE_STRING ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:574:1: (lv_title_4_0= RULE_STRING )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:574:1: (lv_title_4_0= RULE_STRING )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:575:3: lv_title_4_0= RULE_STRING
            {
            lv_title_4_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleAdminPage1014); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_title_4_0, grammarAccess.getAdminPageAccess().getTitleSTRINGTerminalRuleCall_4_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getAdminPageRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"title",
                      		lv_title_4_0, 
                      		"STRING");
              	    
            }

            }


            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:591:2: (otherlv_5= 'description' ( (lv_description_6_0= RULE_STRING ) ) )?
            int alt24=2;
            int LA24_0 = input.LA(1);

            if ( (LA24_0==17) ) {
                alt24=1;
            }
            switch (alt24) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:591:4: otherlv_5= 'description' ( (lv_description_6_0= RULE_STRING ) )
                    {
                    otherlv_5=(Token)match(input,17,FOLLOW_17_in_ruleAdminPage1032); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getAdminPageAccess().getDescriptionKeyword_5_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:595:1: ( (lv_description_6_0= RULE_STRING ) )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:596:1: (lv_description_6_0= RULE_STRING )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:596:1: (lv_description_6_0= RULE_STRING )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:597:3: lv_description_6_0= RULE_STRING
                    {
                    lv_description_6_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleAdminPage1049); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_description_6_0, grammarAccess.getAdminPageAccess().getDescriptionSTRINGTerminalRuleCall_5_1_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getAdminPageRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"description",
                              		lv_description_6_0, 
                              		"STRING");
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            otherlv_7=(Token)match(input,29,FOLLOW_29_in_ruleAdminPage1068); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_7, grammarAccess.getAdminPageAccess().getRightCurlyBracketKeyword_6());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAdminPage"


    // $ANTLR start "entryRuleOptions"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:625:1: entryRuleOptions returns [EObject current=null] : iv_ruleOptions= ruleOptions EOF ;
    public final EObject entryRuleOptions() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleOptions = null;


        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:626:2: (iv_ruleOptions= ruleOptions EOF )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:627:2: iv_ruleOptions= ruleOptions EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOptionsRule()); 
            }
            pushFollow(FOLLOW_ruleOptions_in_entryRuleOptions1104);
            iv_ruleOptions=ruleOptions();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOptions; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOptions1114); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOptions"


    // $ANTLR start "ruleOptions"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:634:1: ruleOptions returns [EObject current=null] : ( () otherlv_1= 'options' otherlv_2= '{' ( (lv_options_3_0= ruleOption ) )* otherlv_4= '}' ) ;
    public final EObject ruleOptions() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_options_3_0 = null;


         enterRule(); 
            
        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:637:28: ( ( () otherlv_1= 'options' otherlv_2= '{' ( (lv_options_3_0= ruleOption ) )* otherlv_4= '}' ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:638:1: ( () otherlv_1= 'options' otherlv_2= '{' ( (lv_options_3_0= ruleOption ) )* otherlv_4= '}' )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:638:1: ( () otherlv_1= 'options' otherlv_2= '{' ( (lv_options_3_0= ruleOption ) )* otherlv_4= '}' )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:638:2: () otherlv_1= 'options' otherlv_2= '{' ( (lv_options_3_0= ruleOption ) )* otherlv_4= '}'
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:638:2: ()
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:639:2: 
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getOptionsAccess().getOptionsAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,30,FOLLOW_30_in_ruleOptions1163); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getOptionsAccess().getOptionsKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,28,FOLLOW_28_in_ruleOptions1175); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getOptionsAccess().getLeftCurlyBracketKeyword_2());
                  
            }
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:655:1: ( (lv_options_3_0= ruleOption ) )*
            loop25:
            do {
                int alt25=2;
                int LA25_0 = input.LA(1);

                if ( (LA25_0==RULE_ID) ) {
                    alt25=1;
                }


                switch (alt25) {
            	case 1 :
            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:656:1: (lv_options_3_0= ruleOption )
            	    {
            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:656:1: (lv_options_3_0= ruleOption )
            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:657:3: lv_options_3_0= ruleOption
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getOptionsAccess().getOptionsOptionParserRuleCall_3_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleOption_in_ruleOptions1196);
            	    lv_options_3_0=ruleOption();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getOptionsRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"options",
            	              		lv_options_3_0, 
            	              		"Option");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop25;
                }
            } while (true);

            otherlv_4=(Token)match(input,29,FOLLOW_29_in_ruleOptions1209); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getOptionsAccess().getRightCurlyBracketKeyword_4());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOptions"


    // $ANTLR start "entryRuleOptionsPage"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:685:1: entryRuleOptionsPage returns [EObject current=null] : iv_ruleOptionsPage= ruleOptionsPage EOF ;
    public final EObject entryRuleOptionsPage() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleOptionsPage = null;


        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:686:2: (iv_ruleOptionsPage= ruleOptionsPage EOF )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:687:2: iv_ruleOptionsPage= ruleOptionsPage EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOptionsPageRule()); 
            }
            pushFollow(FOLLOW_ruleOptionsPage_in_entryRuleOptionsPage1245);
            iv_ruleOptionsPage=ruleOptionsPage();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOptionsPage; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOptionsPage1255); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOptionsPage"


    // $ANTLR start "ruleOptionsPage"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:694:1: ruleOptionsPage returns [EObject current=null] : (otherlv_0= 'options-page' ( (lv_name_1_0= RULE_ID ) ) ( (lv_site_2_0= 'site' ) )? otherlv_3= '{' otherlv_4= 'title' ( (lv_title_5_0= RULE_STRING ) ) ( (lv_header_6_0= RULE_STRING ) )? ( ( (otherlv_7= RULE_ID ) )+ ( (lv_footer_8_0= RULE_STRING ) )? )? otherlv_9= '}' ) ;
    public final EObject ruleOptionsPage() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token lv_site_2_0=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token lv_title_5_0=null;
        Token lv_header_6_0=null;
        Token otherlv_7=null;
        Token lv_footer_8_0=null;
        Token otherlv_9=null;

         enterRule(); 
            
        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:697:28: ( (otherlv_0= 'options-page' ( (lv_name_1_0= RULE_ID ) ) ( (lv_site_2_0= 'site' ) )? otherlv_3= '{' otherlv_4= 'title' ( (lv_title_5_0= RULE_STRING ) ) ( (lv_header_6_0= RULE_STRING ) )? ( ( (otherlv_7= RULE_ID ) )+ ( (lv_footer_8_0= RULE_STRING ) )? )? otherlv_9= '}' ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:698:1: (otherlv_0= 'options-page' ( (lv_name_1_0= RULE_ID ) ) ( (lv_site_2_0= 'site' ) )? otherlv_3= '{' otherlv_4= 'title' ( (lv_title_5_0= RULE_STRING ) ) ( (lv_header_6_0= RULE_STRING ) )? ( ( (otherlv_7= RULE_ID ) )+ ( (lv_footer_8_0= RULE_STRING ) )? )? otherlv_9= '}' )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:698:1: (otherlv_0= 'options-page' ( (lv_name_1_0= RULE_ID ) ) ( (lv_site_2_0= 'site' ) )? otherlv_3= '{' otherlv_4= 'title' ( (lv_title_5_0= RULE_STRING ) ) ( (lv_header_6_0= RULE_STRING ) )? ( ( (otherlv_7= RULE_ID ) )+ ( (lv_footer_8_0= RULE_STRING ) )? )? otherlv_9= '}' )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:698:3: otherlv_0= 'options-page' ( (lv_name_1_0= RULE_ID ) ) ( (lv_site_2_0= 'site' ) )? otherlv_3= '{' otherlv_4= 'title' ( (lv_title_5_0= RULE_STRING ) ) ( (lv_header_6_0= RULE_STRING ) )? ( ( (otherlv_7= RULE_ID ) )+ ( (lv_footer_8_0= RULE_STRING ) )? )? otherlv_9= '}'
            {
            otherlv_0=(Token)match(input,31,FOLLOW_31_in_ruleOptionsPage1292); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getOptionsPageAccess().getOptionsPageKeyword_0());
                  
            }
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:702:1: ( (lv_name_1_0= RULE_ID ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:703:1: (lv_name_1_0= RULE_ID )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:703:1: (lv_name_1_0= RULE_ID )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:704:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleOptionsPage1309); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_1_0, grammarAccess.getOptionsPageAccess().getNameIDTerminalRuleCall_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getOptionsPageRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"ID");
              	    
            }

            }


            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:720:2: ( (lv_site_2_0= 'site' ) )?
            int alt26=2;
            int LA26_0 = input.LA(1);

            if ( (LA26_0==32) ) {
                alt26=1;
            }
            switch (alt26) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:721:1: (lv_site_2_0= 'site' )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:721:1: (lv_site_2_0= 'site' )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:722:3: lv_site_2_0= 'site'
                    {
                    lv_site_2_0=(Token)match(input,32,FOLLOW_32_in_ruleOptionsPage1332); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_site_2_0, grammarAccess.getOptionsPageAccess().getSiteSiteKeyword_2_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getOptionsPageRule());
                      	        }
                             		setWithLastConsumed(current, "site", true, "site");
                      	    
                    }

                    }


                    }
                    break;

            }

            otherlv_3=(Token)match(input,28,FOLLOW_28_in_ruleOptionsPage1358); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getOptionsPageAccess().getLeftCurlyBracketKeyword_3());
                  
            }
            otherlv_4=(Token)match(input,14,FOLLOW_14_in_ruleOptionsPage1370); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getOptionsPageAccess().getTitleKeyword_4());
                  
            }
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:743:1: ( (lv_title_5_0= RULE_STRING ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:744:1: (lv_title_5_0= RULE_STRING )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:744:1: (lv_title_5_0= RULE_STRING )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:745:3: lv_title_5_0= RULE_STRING
            {
            lv_title_5_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleOptionsPage1387); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_title_5_0, grammarAccess.getOptionsPageAccess().getTitleSTRINGTerminalRuleCall_5_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getOptionsPageRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"title",
                      		lv_title_5_0, 
                      		"STRING");
              	    
            }

            }


            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:761:2: ( (lv_header_6_0= RULE_STRING ) )?
            int alt27=2;
            int LA27_0 = input.LA(1);

            if ( (LA27_0==RULE_STRING) ) {
                alt27=1;
            }
            switch (alt27) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:762:1: (lv_header_6_0= RULE_STRING )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:762:1: (lv_header_6_0= RULE_STRING )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:763:3: lv_header_6_0= RULE_STRING
                    {
                    lv_header_6_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleOptionsPage1409); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_header_6_0, grammarAccess.getOptionsPageAccess().getHeaderSTRINGTerminalRuleCall_6_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getOptionsPageRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"header",
                              		lv_header_6_0, 
                              		"STRING");
                      	    
                    }

                    }


                    }
                    break;

            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:779:3: ( ( (otherlv_7= RULE_ID ) )+ ( (lv_footer_8_0= RULE_STRING ) )? )?
            int alt30=2;
            int LA30_0 = input.LA(1);

            if ( (LA30_0==RULE_ID) ) {
                alt30=1;
            }
            switch (alt30) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:779:4: ( (otherlv_7= RULE_ID ) )+ ( (lv_footer_8_0= RULE_STRING ) )?
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:779:4: ( (otherlv_7= RULE_ID ) )+
                    int cnt28=0;
                    loop28:
                    do {
                        int alt28=2;
                        int LA28_0 = input.LA(1);

                        if ( (LA28_0==RULE_ID) ) {
                            alt28=1;
                        }


                        switch (alt28) {
                    	case 1 :
                    	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:780:1: (otherlv_7= RULE_ID )
                    	    {
                    	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:780:1: (otherlv_7= RULE_ID )
                    	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:781:3: otherlv_7= RULE_ID
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      		  /* */ 
                    	      		
                    	    }
                    	    if ( state.backtracking==0 ) {

                    	      			if (current==null) {
                    	      	            current = createModelElement(grammarAccess.getOptionsPageRule());
                    	      	        }
                    	              
                    	    }
                    	    otherlv_7=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleOptionsPage1440); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      		newLeafNode(otherlv_7, grammarAccess.getOptionsPageAccess().getOptionsOptionCrossReference_7_0_0()); 
                    	      	
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt28 >= 1 ) break loop28;
                    	    if (state.backtracking>0) {state.failed=true; return current;}
                                EarlyExitException eee =
                                    new EarlyExitException(28, input);
                                throw eee;
                        }
                        cnt28++;
                    } while (true);

                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:795:3: ( (lv_footer_8_0= RULE_STRING ) )?
                    int alt29=2;
                    int LA29_0 = input.LA(1);

                    if ( (LA29_0==RULE_STRING) ) {
                        alt29=1;
                    }
                    switch (alt29) {
                        case 1 :
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:796:1: (lv_footer_8_0= RULE_STRING )
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:796:1: (lv_footer_8_0= RULE_STRING )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:797:3: lv_footer_8_0= RULE_STRING
                            {
                            lv_footer_8_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleOptionsPage1458); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              			newLeafNode(lv_footer_8_0, grammarAccess.getOptionsPageAccess().getFooterSTRINGTerminalRuleCall_7_1_0()); 
                              		
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getOptionsPageRule());
                              	        }
                                     		setWithLastConsumed(
                                     			current, 
                                     			"footer",
                                      		lv_footer_8_0, 
                                      		"STRING");
                              	    
                            }

                            }


                            }
                            break;

                    }


                    }
                    break;

            }

            otherlv_9=(Token)match(input,29,FOLLOW_29_in_ruleOptionsPage1478); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_9, grammarAccess.getOptionsPageAccess().getRightCurlyBracketKeyword_8());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOptionsPage"


    // $ANTLR start "entryRuleOptionType"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:825:1: entryRuleOptionType returns [EObject current=null] : iv_ruleOptionType= ruleOptionType EOF ;
    public final EObject entryRuleOptionType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleOptionType = null;


        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:826:2: (iv_ruleOptionType= ruleOptionType EOF )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:827:2: iv_ruleOptionType= ruleOptionType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOptionTypeRule()); 
            }
            pushFollow(FOLLOW_ruleOptionType_in_entryRuleOptionType1514);
            iv_ruleOptionType=ruleOptionType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOptionType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOptionType1524); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOptionType"


    // $ANTLR start "ruleOptionType"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:834:1: ruleOptionType returns [EObject current=null] : ( (otherlv_0= 'string' this_StringOption_1= ruleStringOption ) | (otherlv_2= 'text' this_TextOption_3= ruleTextOption ) | (otherlv_4= 'url' this_URLOption_5= ruleURLOption ) | (otherlv_6= 'integer' this_IntegerOption_7= ruleIntegerOption ) | (otherlv_8= 'float' this_FloatOption_9= ruleFloatOption ) | (otherlv_10= 'range' this_RangeOption_11= ruleRangeOption ) | (otherlv_12= 'select' this_SelectOption_13= ruleSelectOption ) | (otherlv_14= 'choice' this_ChoiceOption_15= ruleChoiceOption ) | (otherlv_16= 'boolean' this_BooleanOption_17= ruleBooleanOption ) | (otherlv_18= 'date' this_DateOption_19= ruleDateOption ) | ( (otherlv_20= 'colour' | otherlv_21= 'color' ) this_ColourOption_22= ruleColourOption ) | (otherlv_23= 'custom' this_CustomOption_24= ruleCustomOption ) ) ;
    public final EObject ruleOptionType() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        Token otherlv_10=null;
        Token otherlv_12=null;
        Token otherlv_14=null;
        Token otherlv_16=null;
        Token otherlv_18=null;
        Token otherlv_20=null;
        Token otherlv_21=null;
        Token otherlv_23=null;
        EObject this_StringOption_1 = null;

        EObject this_TextOption_3 = null;

        EObject this_URLOption_5 = null;

        EObject this_IntegerOption_7 = null;

        EObject this_FloatOption_9 = null;

        EObject this_RangeOption_11 = null;

        EObject this_SelectOption_13 = null;

        EObject this_ChoiceOption_15 = null;

        EObject this_BooleanOption_17 = null;

        EObject this_DateOption_19 = null;

        EObject this_ColourOption_22 = null;

        EObject this_CustomOption_24 = null;


         enterRule(); 
            
        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:837:28: ( ( (otherlv_0= 'string' this_StringOption_1= ruleStringOption ) | (otherlv_2= 'text' this_TextOption_3= ruleTextOption ) | (otherlv_4= 'url' this_URLOption_5= ruleURLOption ) | (otherlv_6= 'integer' this_IntegerOption_7= ruleIntegerOption ) | (otherlv_8= 'float' this_FloatOption_9= ruleFloatOption ) | (otherlv_10= 'range' this_RangeOption_11= ruleRangeOption ) | (otherlv_12= 'select' this_SelectOption_13= ruleSelectOption ) | (otherlv_14= 'choice' this_ChoiceOption_15= ruleChoiceOption ) | (otherlv_16= 'boolean' this_BooleanOption_17= ruleBooleanOption ) | (otherlv_18= 'date' this_DateOption_19= ruleDateOption ) | ( (otherlv_20= 'colour' | otherlv_21= 'color' ) this_ColourOption_22= ruleColourOption ) | (otherlv_23= 'custom' this_CustomOption_24= ruleCustomOption ) ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:838:1: ( (otherlv_0= 'string' this_StringOption_1= ruleStringOption ) | (otherlv_2= 'text' this_TextOption_3= ruleTextOption ) | (otherlv_4= 'url' this_URLOption_5= ruleURLOption ) | (otherlv_6= 'integer' this_IntegerOption_7= ruleIntegerOption ) | (otherlv_8= 'float' this_FloatOption_9= ruleFloatOption ) | (otherlv_10= 'range' this_RangeOption_11= ruleRangeOption ) | (otherlv_12= 'select' this_SelectOption_13= ruleSelectOption ) | (otherlv_14= 'choice' this_ChoiceOption_15= ruleChoiceOption ) | (otherlv_16= 'boolean' this_BooleanOption_17= ruleBooleanOption ) | (otherlv_18= 'date' this_DateOption_19= ruleDateOption ) | ( (otherlv_20= 'colour' | otherlv_21= 'color' ) this_ColourOption_22= ruleColourOption ) | (otherlv_23= 'custom' this_CustomOption_24= ruleCustomOption ) )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:838:1: ( (otherlv_0= 'string' this_StringOption_1= ruleStringOption ) | (otherlv_2= 'text' this_TextOption_3= ruleTextOption ) | (otherlv_4= 'url' this_URLOption_5= ruleURLOption ) | (otherlv_6= 'integer' this_IntegerOption_7= ruleIntegerOption ) | (otherlv_8= 'float' this_FloatOption_9= ruleFloatOption ) | (otherlv_10= 'range' this_RangeOption_11= ruleRangeOption ) | (otherlv_12= 'select' this_SelectOption_13= ruleSelectOption ) | (otherlv_14= 'choice' this_ChoiceOption_15= ruleChoiceOption ) | (otherlv_16= 'boolean' this_BooleanOption_17= ruleBooleanOption ) | (otherlv_18= 'date' this_DateOption_19= ruleDateOption ) | ( (otherlv_20= 'colour' | otherlv_21= 'color' ) this_ColourOption_22= ruleColourOption ) | (otherlv_23= 'custom' this_CustomOption_24= ruleCustomOption ) )
            int alt32=12;
            switch ( input.LA(1) ) {
            case 33:
                {
                alt32=1;
                }
                break;
            case 34:
                {
                alt32=2;
                }
                break;
            case 35:
                {
                alt32=3;
                }
                break;
            case 36:
                {
                alt32=4;
                }
                break;
            case 37:
                {
                alt32=5;
                }
                break;
            case 38:
                {
                alt32=6;
                }
                break;
            case 39:
                {
                alt32=7;
                }
                break;
            case 40:
                {
                alt32=8;
                }
                break;
            case 41:
                {
                alt32=9;
                }
                break;
            case 42:
                {
                alt32=10;
                }
                break;
            case 43:
            case 44:
                {
                alt32=11;
                }
                break;
            case 45:
                {
                alt32=12;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 32, 0, input);

                throw nvae;
            }

            switch (alt32) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:838:2: (otherlv_0= 'string' this_StringOption_1= ruleStringOption )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:838:2: (otherlv_0= 'string' this_StringOption_1= ruleStringOption )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:838:4: otherlv_0= 'string' this_StringOption_1= ruleStringOption
                    {
                    otherlv_0=(Token)match(input,33,FOLLOW_33_in_ruleOptionType1562); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_0, grammarAccess.getOptionTypeAccess().getStringKeyword_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getOptionTypeAccess().getStringOptionParserRuleCall_0_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleStringOption_in_ruleOptionType1587);
                    this_StringOption_1=ruleStringOption();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_StringOption_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }


                    }
                    break;
                case 2 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:855:6: (otherlv_2= 'text' this_TextOption_3= ruleTextOption )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:855:6: (otherlv_2= 'text' this_TextOption_3= ruleTextOption )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:855:8: otherlv_2= 'text' this_TextOption_3= ruleTextOption
                    {
                    otherlv_2=(Token)match(input,34,FOLLOW_34_in_ruleOptionType1606); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getOptionTypeAccess().getTextKeyword_1_0());
                          
                    }
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getOptionTypeAccess().getTextOptionParserRuleCall_1_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleTextOption_in_ruleOptionType1631);
                    this_TextOption_3=ruleTextOption();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_TextOption_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }


                    }
                    break;
                case 3 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:872:6: (otherlv_4= 'url' this_URLOption_5= ruleURLOption )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:872:6: (otherlv_4= 'url' this_URLOption_5= ruleURLOption )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:872:8: otherlv_4= 'url' this_URLOption_5= ruleURLOption
                    {
                    otherlv_4=(Token)match(input,35,FOLLOW_35_in_ruleOptionType1650); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getOptionTypeAccess().getUrlKeyword_2_0());
                          
                    }
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getOptionTypeAccess().getURLOptionParserRuleCall_2_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleURLOption_in_ruleOptionType1675);
                    this_URLOption_5=ruleURLOption();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_URLOption_5; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }


                    }
                    break;
                case 4 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:889:6: (otherlv_6= 'integer' this_IntegerOption_7= ruleIntegerOption )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:889:6: (otherlv_6= 'integer' this_IntegerOption_7= ruleIntegerOption )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:889:8: otherlv_6= 'integer' this_IntegerOption_7= ruleIntegerOption
                    {
                    otherlv_6=(Token)match(input,36,FOLLOW_36_in_ruleOptionType1694); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getOptionTypeAccess().getIntegerKeyword_3_0());
                          
                    }
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getOptionTypeAccess().getIntegerOptionParserRuleCall_3_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleIntegerOption_in_ruleOptionType1719);
                    this_IntegerOption_7=ruleIntegerOption();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_IntegerOption_7; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }


                    }
                    break;
                case 5 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:906:6: (otherlv_8= 'float' this_FloatOption_9= ruleFloatOption )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:906:6: (otherlv_8= 'float' this_FloatOption_9= ruleFloatOption )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:906:8: otherlv_8= 'float' this_FloatOption_9= ruleFloatOption
                    {
                    otherlv_8=(Token)match(input,37,FOLLOW_37_in_ruleOptionType1738); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_8, grammarAccess.getOptionTypeAccess().getFloatKeyword_4_0());
                          
                    }
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getOptionTypeAccess().getFloatOptionParserRuleCall_4_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleFloatOption_in_ruleOptionType1763);
                    this_FloatOption_9=ruleFloatOption();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_FloatOption_9; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }


                    }
                    break;
                case 6 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:923:6: (otherlv_10= 'range' this_RangeOption_11= ruleRangeOption )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:923:6: (otherlv_10= 'range' this_RangeOption_11= ruleRangeOption )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:923:8: otherlv_10= 'range' this_RangeOption_11= ruleRangeOption
                    {
                    otherlv_10=(Token)match(input,38,FOLLOW_38_in_ruleOptionType1782); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_10, grammarAccess.getOptionTypeAccess().getRangeKeyword_5_0());
                          
                    }
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getOptionTypeAccess().getRangeOptionParserRuleCall_5_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleRangeOption_in_ruleOptionType1807);
                    this_RangeOption_11=ruleRangeOption();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_RangeOption_11; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }


                    }
                    break;
                case 7 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:940:6: (otherlv_12= 'select' this_SelectOption_13= ruleSelectOption )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:940:6: (otherlv_12= 'select' this_SelectOption_13= ruleSelectOption )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:940:8: otherlv_12= 'select' this_SelectOption_13= ruleSelectOption
                    {
                    otherlv_12=(Token)match(input,39,FOLLOW_39_in_ruleOptionType1826); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_12, grammarAccess.getOptionTypeAccess().getSelectKeyword_6_0());
                          
                    }
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getOptionTypeAccess().getSelectOptionParserRuleCall_6_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleSelectOption_in_ruleOptionType1851);
                    this_SelectOption_13=ruleSelectOption();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_SelectOption_13; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }


                    }
                    break;
                case 8 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:957:6: (otherlv_14= 'choice' this_ChoiceOption_15= ruleChoiceOption )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:957:6: (otherlv_14= 'choice' this_ChoiceOption_15= ruleChoiceOption )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:957:8: otherlv_14= 'choice' this_ChoiceOption_15= ruleChoiceOption
                    {
                    otherlv_14=(Token)match(input,40,FOLLOW_40_in_ruleOptionType1870); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_14, grammarAccess.getOptionTypeAccess().getChoiceKeyword_7_0());
                          
                    }
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getOptionTypeAccess().getChoiceOptionParserRuleCall_7_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleChoiceOption_in_ruleOptionType1895);
                    this_ChoiceOption_15=ruleChoiceOption();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ChoiceOption_15; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }


                    }
                    break;
                case 9 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:974:6: (otherlv_16= 'boolean' this_BooleanOption_17= ruleBooleanOption )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:974:6: (otherlv_16= 'boolean' this_BooleanOption_17= ruleBooleanOption )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:974:8: otherlv_16= 'boolean' this_BooleanOption_17= ruleBooleanOption
                    {
                    otherlv_16=(Token)match(input,41,FOLLOW_41_in_ruleOptionType1914); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_16, grammarAccess.getOptionTypeAccess().getBooleanKeyword_8_0());
                          
                    }
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getOptionTypeAccess().getBooleanOptionParserRuleCall_8_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleBooleanOption_in_ruleOptionType1939);
                    this_BooleanOption_17=ruleBooleanOption();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_BooleanOption_17; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }


                    }
                    break;
                case 10 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:991:6: (otherlv_18= 'date' this_DateOption_19= ruleDateOption )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:991:6: (otherlv_18= 'date' this_DateOption_19= ruleDateOption )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:991:8: otherlv_18= 'date' this_DateOption_19= ruleDateOption
                    {
                    otherlv_18=(Token)match(input,42,FOLLOW_42_in_ruleOptionType1958); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_18, grammarAccess.getOptionTypeAccess().getDateKeyword_9_0());
                          
                    }
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getOptionTypeAccess().getDateOptionParserRuleCall_9_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleDateOption_in_ruleOptionType1983);
                    this_DateOption_19=ruleDateOption();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_DateOption_19; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }


                    }
                    break;
                case 11 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1008:6: ( (otherlv_20= 'colour' | otherlv_21= 'color' ) this_ColourOption_22= ruleColourOption )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1008:6: ( (otherlv_20= 'colour' | otherlv_21= 'color' ) this_ColourOption_22= ruleColourOption )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1008:7: (otherlv_20= 'colour' | otherlv_21= 'color' ) this_ColourOption_22= ruleColourOption
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1008:7: (otherlv_20= 'colour' | otherlv_21= 'color' )
                    int alt31=2;
                    int LA31_0 = input.LA(1);

                    if ( (LA31_0==43) ) {
                        alt31=1;
                    }
                    else if ( (LA31_0==44) ) {
                        alt31=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 31, 0, input);

                        throw nvae;
                    }
                    switch (alt31) {
                        case 1 :
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1008:9: otherlv_20= 'colour'
                            {
                            otherlv_20=(Token)match(input,43,FOLLOW_43_in_ruleOptionType2003); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_20, grammarAccess.getOptionTypeAccess().getColourKeyword_10_0_0());
                                  
                            }

                            }
                            break;
                        case 2 :
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1013:7: otherlv_21= 'color'
                            {
                            otherlv_21=(Token)match(input,44,FOLLOW_44_in_ruleOptionType2021); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_21, grammarAccess.getOptionTypeAccess().getColorKeyword_10_0_1());
                                  
                            }

                            }
                            break;

                    }

                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getOptionTypeAccess().getColourOptionParserRuleCall_10_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleColourOption_in_ruleOptionType2047);
                    this_ColourOption_22=ruleColourOption();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ColourOption_22; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }


                    }
                    break;
                case 12 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1030:6: (otherlv_23= 'custom' this_CustomOption_24= ruleCustomOption )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1030:6: (otherlv_23= 'custom' this_CustomOption_24= ruleCustomOption )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1030:8: otherlv_23= 'custom' this_CustomOption_24= ruleCustomOption
                    {
                    otherlv_23=(Token)match(input,45,FOLLOW_45_in_ruleOptionType2066); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_23, grammarAccess.getOptionTypeAccess().getCustomKeyword_11_0());
                          
                    }
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getOptionTypeAccess().getCustomOptionParserRuleCall_11_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleCustomOption_in_ruleOptionType2091);
                    this_CustomOption_24=ruleCustomOption();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_CustomOption_24; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOptionType"


    // $ANTLR start "entryRuleFloatOption"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1054:1: entryRuleFloatOption returns [EObject current=null] : iv_ruleFloatOption= ruleFloatOption EOF ;
    public final EObject entryRuleFloatOption() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFloatOption = null;


        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1055:2: (iv_ruleFloatOption= ruleFloatOption EOF )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1056:2: iv_ruleFloatOption= ruleFloatOption EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getFloatOptionRule()); 
            }
            pushFollow(FOLLOW_ruleFloatOption_in_entryRuleFloatOption2127);
            iv_ruleFloatOption=ruleFloatOption();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleFloatOption; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleFloatOption2137); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFloatOption"


    // $ANTLR start "ruleFloatOption"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1063:1: ruleFloatOption returns [EObject current=null] : ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )? ) ;
    public final EObject ruleFloatOption() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_param_2_0 = null;

        EObject lv_param_4_0 = null;


         enterRule(); 
            
        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1066:28: ( ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )? ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1067:1: ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )? )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1067:1: ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )? )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1067:2: () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )?
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1067:2: ()
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1068:2: 
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getFloatOptionAccess().getFloatOptionAction_0(),
                          current);
                  
            }

            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1076:2: (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )?
            int alt35=2;
            int LA35_0 = input.LA(1);

            if ( (LA35_0==46) ) {
                alt35=1;
            }
            switch (alt35) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1076:4: otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')'
                    {
                    otherlv_1=(Token)match(input,46,FOLLOW_46_in_ruleFloatOption2187); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getFloatOptionAccess().getLeftParenthesisKeyword_1_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1080:1: ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )?
                    int alt34=2;
                    int LA34_0 = input.LA(1);

                    if ( (LA34_0==14||LA34_0==17||LA34_0==32||LA34_0==49) ) {
                        alt34=1;
                    }
                    switch (alt34) {
                        case 1 :
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1080:2: ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )*
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1080:2: ( (lv_param_2_0= ruleDefaultOptionParam ) )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1081:1: (lv_param_2_0= ruleDefaultOptionParam )
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1081:1: (lv_param_2_0= ruleDefaultOptionParam )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1082:3: lv_param_2_0= ruleDefaultOptionParam
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getFloatOptionAccess().getParamDefaultOptionParamParserRuleCall_1_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleDefaultOptionParam_in_ruleFloatOption2209);
                            lv_param_2_0=ruleDefaultOptionParam();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getFloatOptionRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"param",
                                      		lv_param_2_0, 
                                      		"DefaultOptionParam");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1098:2: (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )*
                            loop33:
                            do {
                                int alt33=2;
                                int LA33_0 = input.LA(1);

                                if ( (LA33_0==47) ) {
                                    alt33=1;
                                }


                                switch (alt33) {
                            	case 1 :
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1098:4: otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) )
                            	    {
                            	    otherlv_3=(Token)match(input,47,FOLLOW_47_in_ruleFloatOption2222); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_3, grammarAccess.getFloatOptionAccess().getCommaKeyword_1_1_1_0());
                            	          
                            	    }
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1102:1: ( (lv_param_4_0= ruleDefaultOptionParam ) )
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1103:1: (lv_param_4_0= ruleDefaultOptionParam )
                            	    {
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1103:1: (lv_param_4_0= ruleDefaultOptionParam )
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1104:3: lv_param_4_0= ruleDefaultOptionParam
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getFloatOptionAccess().getParamDefaultOptionParamParserRuleCall_1_1_1_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FOLLOW_ruleDefaultOptionParam_in_ruleFloatOption2243);
                            	    lv_param_4_0=ruleDefaultOptionParam();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getFloatOptionRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"param",
                            	              		lv_param_4_0, 
                            	              		"DefaultOptionParam");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop33;
                                }
                            } while (true);


                            }
                            break;

                    }

                    otherlv_5=(Token)match(input,48,FOLLOW_48_in_ruleFloatOption2259); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getFloatOptionAccess().getRightParenthesisKeyword_1_2());
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFloatOption"


    // $ANTLR start "entryRuleRangeOption"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1132:1: entryRuleRangeOption returns [EObject current=null] : iv_ruleRangeOption= ruleRangeOption EOF ;
    public final EObject entryRuleRangeOption() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRangeOption = null;


        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1133:2: (iv_ruleRangeOption= ruleRangeOption EOF )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1134:2: iv_ruleRangeOption= ruleRangeOption EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getRangeOptionRule()); 
            }
            pushFollow(FOLLOW_ruleRangeOption_in_entryRuleRangeOption2297);
            iv_ruleRangeOption=ruleRangeOption();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleRangeOption; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleRangeOption2307); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRangeOption"


    // $ANTLR start "ruleRangeOption"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1141:1: ruleRangeOption returns [EObject current=null] : ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )? ) ;
    public final EObject ruleRangeOption() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_param_2_0 = null;

        EObject lv_param_4_0 = null;


         enterRule(); 
            
        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1144:28: ( ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )? ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1145:1: ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )? )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1145:1: ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )? )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1145:2: () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )?
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1145:2: ()
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1146:2: 
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getRangeOptionAccess().getRangeOptionAction_0(),
                          current);
                  
            }

            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1154:2: (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )?
            int alt38=2;
            int LA38_0 = input.LA(1);

            if ( (LA38_0==46) ) {
                alt38=1;
            }
            switch (alt38) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1154:4: otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')'
                    {
                    otherlv_1=(Token)match(input,46,FOLLOW_46_in_ruleRangeOption2357); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getRangeOptionAccess().getLeftParenthesisKeyword_1_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1158:1: ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )?
                    int alt37=2;
                    int LA37_0 = input.LA(1);

                    if ( (LA37_0==14||LA37_0==17||LA37_0==32||LA37_0==49) ) {
                        alt37=1;
                    }
                    switch (alt37) {
                        case 1 :
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1158:2: ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )*
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1158:2: ( (lv_param_2_0= ruleDefaultOptionParam ) )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1159:1: (lv_param_2_0= ruleDefaultOptionParam )
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1159:1: (lv_param_2_0= ruleDefaultOptionParam )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1160:3: lv_param_2_0= ruleDefaultOptionParam
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getRangeOptionAccess().getParamDefaultOptionParamParserRuleCall_1_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleDefaultOptionParam_in_ruleRangeOption2379);
                            lv_param_2_0=ruleDefaultOptionParam();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getRangeOptionRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"param",
                                      		lv_param_2_0, 
                                      		"DefaultOptionParam");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1176:2: (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )*
                            loop36:
                            do {
                                int alt36=2;
                                int LA36_0 = input.LA(1);

                                if ( (LA36_0==47) ) {
                                    alt36=1;
                                }


                                switch (alt36) {
                            	case 1 :
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1176:4: otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) )
                            	    {
                            	    otherlv_3=(Token)match(input,47,FOLLOW_47_in_ruleRangeOption2392); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_3, grammarAccess.getRangeOptionAccess().getCommaKeyword_1_1_1_0());
                            	          
                            	    }
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1180:1: ( (lv_param_4_0= ruleDefaultOptionParam ) )
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1181:1: (lv_param_4_0= ruleDefaultOptionParam )
                            	    {
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1181:1: (lv_param_4_0= ruleDefaultOptionParam )
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1182:3: lv_param_4_0= ruleDefaultOptionParam
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getRangeOptionAccess().getParamDefaultOptionParamParserRuleCall_1_1_1_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FOLLOW_ruleDefaultOptionParam_in_ruleRangeOption2413);
                            	    lv_param_4_0=ruleDefaultOptionParam();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getRangeOptionRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"param",
                            	              		lv_param_4_0, 
                            	              		"DefaultOptionParam");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop36;
                                }
                            } while (true);


                            }
                            break;

                    }

                    otherlv_5=(Token)match(input,48,FOLLOW_48_in_ruleRangeOption2429); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getRangeOptionAccess().getRightParenthesisKeyword_1_2());
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRangeOption"


    // $ANTLR start "entryRuleSelectOption"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1212:1: entryRuleSelectOption returns [EObject current=null] : iv_ruleSelectOption= ruleSelectOption EOF ;
    public final EObject entryRuleSelectOption() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSelectOption = null;


        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1213:2: (iv_ruleSelectOption= ruleSelectOption EOF )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1214:2: iv_ruleSelectOption= ruleSelectOption EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSelectOptionRule()); 
            }
            pushFollow(FOLLOW_ruleSelectOption_in_entryRuleSelectOption2469);
            iv_ruleSelectOption=ruleSelectOption();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSelectOption; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleSelectOption2479); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSelectOption"


    // $ANTLR start "ruleSelectOption"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1221:1: ruleSelectOption returns [EObject current=null] : ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleSelectParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleSelectParam ) ) )* )? otherlv_5= ')' )? ) ;
    public final EObject ruleSelectOption() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_param_2_0 = null;

        EObject lv_param_4_0 = null;


         enterRule(); 
            
        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1224:28: ( ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleSelectParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleSelectParam ) ) )* )? otherlv_5= ')' )? ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1225:1: ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleSelectParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleSelectParam ) ) )* )? otherlv_5= ')' )? )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1225:1: ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleSelectParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleSelectParam ) ) )* )? otherlv_5= ')' )? )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1225:2: () (otherlv_1= '(' ( ( (lv_param_2_0= ruleSelectParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleSelectParam ) ) )* )? otherlv_5= ')' )?
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1225:2: ()
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1226:2: 
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getSelectOptionAccess().getSelectOptionAction_0(),
                          current);
                  
            }

            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1234:2: (otherlv_1= '(' ( ( (lv_param_2_0= ruleSelectParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleSelectParam ) ) )* )? otherlv_5= ')' )?
            int alt41=2;
            int LA41_0 = input.LA(1);

            if ( (LA41_0==46) ) {
                alt41=1;
            }
            switch (alt41) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1234:4: otherlv_1= '(' ( ( (lv_param_2_0= ruleSelectParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleSelectParam ) ) )* )? otherlv_5= ')'
                    {
                    otherlv_1=(Token)match(input,46,FOLLOW_46_in_ruleSelectOption2529); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getSelectOptionAccess().getLeftParenthesisKeyword_1_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1238:1: ( ( (lv_param_2_0= ruleSelectParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleSelectParam ) ) )* )?
                    int alt40=2;
                    int LA40_0 = input.LA(1);

                    if ( (LA40_0==RULE_ID||LA40_0==14||LA40_0==17||LA40_0==32||LA40_0==49) ) {
                        alt40=1;
                    }
                    switch (alt40) {
                        case 1 :
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1238:2: ( (lv_param_2_0= ruleSelectParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleSelectParam ) ) )*
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1238:2: ( (lv_param_2_0= ruleSelectParam ) )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1239:1: (lv_param_2_0= ruleSelectParam )
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1239:1: (lv_param_2_0= ruleSelectParam )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1240:3: lv_param_2_0= ruleSelectParam
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getSelectOptionAccess().getParamSelectParamParserRuleCall_1_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleSelectParam_in_ruleSelectOption2551);
                            lv_param_2_0=ruleSelectParam();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getSelectOptionRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"param",
                                      		lv_param_2_0, 
                                      		"SelectParam");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1256:2: (otherlv_3= ',' ( (lv_param_4_0= ruleSelectParam ) ) )*
                            loop39:
                            do {
                                int alt39=2;
                                int LA39_0 = input.LA(1);

                                if ( (LA39_0==47) ) {
                                    alt39=1;
                                }


                                switch (alt39) {
                            	case 1 :
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1256:4: otherlv_3= ',' ( (lv_param_4_0= ruleSelectParam ) )
                            	    {
                            	    otherlv_3=(Token)match(input,47,FOLLOW_47_in_ruleSelectOption2564); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_3, grammarAccess.getSelectOptionAccess().getCommaKeyword_1_1_1_0());
                            	          
                            	    }
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1260:1: ( (lv_param_4_0= ruleSelectParam ) )
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1261:1: (lv_param_4_0= ruleSelectParam )
                            	    {
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1261:1: (lv_param_4_0= ruleSelectParam )
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1262:3: lv_param_4_0= ruleSelectParam
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getSelectOptionAccess().getParamSelectParamParserRuleCall_1_1_1_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FOLLOW_ruleSelectParam_in_ruleSelectOption2585);
                            	    lv_param_4_0=ruleSelectParam();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getSelectOptionRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"param",
                            	              		lv_param_4_0, 
                            	              		"SelectParam");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop39;
                                }
                            } while (true);


                            }
                            break;

                    }

                    otherlv_5=(Token)match(input,48,FOLLOW_48_in_ruleSelectOption2601); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getSelectOptionAccess().getRightParenthesisKeyword_1_2());
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSelectOption"


    // $ANTLR start "entryRuleChoiceOption"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1290:1: entryRuleChoiceOption returns [EObject current=null] : iv_ruleChoiceOption= ruleChoiceOption EOF ;
    public final EObject entryRuleChoiceOption() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleChoiceOption = null;


        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1291:2: (iv_ruleChoiceOption= ruleChoiceOption EOF )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1292:2: iv_ruleChoiceOption= ruleChoiceOption EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getChoiceOptionRule()); 
            }
            pushFollow(FOLLOW_ruleChoiceOption_in_entryRuleChoiceOption2639);
            iv_ruleChoiceOption=ruleChoiceOption();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleChoiceOption; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleChoiceOption2649); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleChoiceOption"


    // $ANTLR start "ruleChoiceOption"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1299:1: ruleChoiceOption returns [EObject current=null] : ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleChoiceParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleChoiceParam ) ) )* )? otherlv_5= ')' )? ) ;
    public final EObject ruleChoiceOption() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_param_2_0 = null;

        EObject lv_param_4_0 = null;


         enterRule(); 
            
        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1302:28: ( ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleChoiceParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleChoiceParam ) ) )* )? otherlv_5= ')' )? ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1303:1: ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleChoiceParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleChoiceParam ) ) )* )? otherlv_5= ')' )? )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1303:1: ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleChoiceParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleChoiceParam ) ) )* )? otherlv_5= ')' )? )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1303:2: () (otherlv_1= '(' ( ( (lv_param_2_0= ruleChoiceParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleChoiceParam ) ) )* )? otherlv_5= ')' )?
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1303:2: ()
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1304:2: 
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getChoiceOptionAccess().getChoiceOptionAction_0(),
                          current);
                  
            }

            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1312:2: (otherlv_1= '(' ( ( (lv_param_2_0= ruleChoiceParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleChoiceParam ) ) )* )? otherlv_5= ')' )?
            int alt44=2;
            int LA44_0 = input.LA(1);

            if ( (LA44_0==46) ) {
                alt44=1;
            }
            switch (alt44) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1312:4: otherlv_1= '(' ( ( (lv_param_2_0= ruleChoiceParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleChoiceParam ) ) )* )? otherlv_5= ')'
                    {
                    otherlv_1=(Token)match(input,46,FOLLOW_46_in_ruleChoiceOption2699); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getChoiceOptionAccess().getLeftParenthesisKeyword_1_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1316:1: ( ( (lv_param_2_0= ruleChoiceParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleChoiceParam ) ) )* )?
                    int alt43=2;
                    int LA43_0 = input.LA(1);

                    if ( (LA43_0==RULE_ID||LA43_0==14||LA43_0==17||LA43_0==32||LA43_0==49) ) {
                        alt43=1;
                    }
                    switch (alt43) {
                        case 1 :
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1316:2: ( (lv_param_2_0= ruleChoiceParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleChoiceParam ) ) )*
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1316:2: ( (lv_param_2_0= ruleChoiceParam ) )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1317:1: (lv_param_2_0= ruleChoiceParam )
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1317:1: (lv_param_2_0= ruleChoiceParam )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1318:3: lv_param_2_0= ruleChoiceParam
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getChoiceOptionAccess().getParamChoiceParamParserRuleCall_1_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleChoiceParam_in_ruleChoiceOption2721);
                            lv_param_2_0=ruleChoiceParam();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getChoiceOptionRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"param",
                                      		lv_param_2_0, 
                                      		"ChoiceParam");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1334:2: (otherlv_3= ',' ( (lv_param_4_0= ruleChoiceParam ) ) )*
                            loop42:
                            do {
                                int alt42=2;
                                int LA42_0 = input.LA(1);

                                if ( (LA42_0==47) ) {
                                    alt42=1;
                                }


                                switch (alt42) {
                            	case 1 :
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1334:4: otherlv_3= ',' ( (lv_param_4_0= ruleChoiceParam ) )
                            	    {
                            	    otherlv_3=(Token)match(input,47,FOLLOW_47_in_ruleChoiceOption2734); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_3, grammarAccess.getChoiceOptionAccess().getCommaKeyword_1_1_1_0());
                            	          
                            	    }
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1338:1: ( (lv_param_4_0= ruleChoiceParam ) )
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1339:1: (lv_param_4_0= ruleChoiceParam )
                            	    {
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1339:1: (lv_param_4_0= ruleChoiceParam )
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1340:3: lv_param_4_0= ruleChoiceParam
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getChoiceOptionAccess().getParamChoiceParamParserRuleCall_1_1_1_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FOLLOW_ruleChoiceParam_in_ruleChoiceOption2755);
                            	    lv_param_4_0=ruleChoiceParam();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getChoiceOptionRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"param",
                            	              		lv_param_4_0, 
                            	              		"ChoiceParam");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop42;
                                }
                            } while (true);


                            }
                            break;

                    }

                    otherlv_5=(Token)match(input,48,FOLLOW_48_in_ruleChoiceOption2771); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getChoiceOptionAccess().getRightParenthesisKeyword_1_2());
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleChoiceOption"


    // $ANTLR start "entryRuleURLOption"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1368:1: entryRuleURLOption returns [EObject current=null] : iv_ruleURLOption= ruleURLOption EOF ;
    public final EObject entryRuleURLOption() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleURLOption = null;


        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1369:2: (iv_ruleURLOption= ruleURLOption EOF )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1370:2: iv_ruleURLOption= ruleURLOption EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getURLOptionRule()); 
            }
            pushFollow(FOLLOW_ruleURLOption_in_entryRuleURLOption2809);
            iv_ruleURLOption=ruleURLOption();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleURLOption; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleURLOption2819); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleURLOption"


    // $ANTLR start "ruleURLOption"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1377:1: ruleURLOption returns [EObject current=null] : ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )? ) ;
    public final EObject ruleURLOption() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_param_2_0 = null;

        EObject lv_param_4_0 = null;


         enterRule(); 
            
        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1380:28: ( ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )? ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1381:1: ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )? )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1381:1: ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )? )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1381:2: () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )?
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1381:2: ()
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1382:2: 
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getURLOptionAccess().getURLOptionAction_0(),
                          current);
                  
            }

            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1390:2: (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )?
            int alt47=2;
            int LA47_0 = input.LA(1);

            if ( (LA47_0==46) ) {
                alt47=1;
            }
            switch (alt47) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1390:4: otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')'
                    {
                    otherlv_1=(Token)match(input,46,FOLLOW_46_in_ruleURLOption2869); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getURLOptionAccess().getLeftParenthesisKeyword_1_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1394:1: ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )?
                    int alt46=2;
                    int LA46_0 = input.LA(1);

                    if ( (LA46_0==14||LA46_0==17||LA46_0==32||LA46_0==49) ) {
                        alt46=1;
                    }
                    switch (alt46) {
                        case 1 :
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1394:2: ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )*
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1394:2: ( (lv_param_2_0= ruleDefaultOptionParam ) )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1395:1: (lv_param_2_0= ruleDefaultOptionParam )
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1395:1: (lv_param_2_0= ruleDefaultOptionParam )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1396:3: lv_param_2_0= ruleDefaultOptionParam
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getURLOptionAccess().getParamDefaultOptionParamParserRuleCall_1_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleDefaultOptionParam_in_ruleURLOption2891);
                            lv_param_2_0=ruleDefaultOptionParam();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getURLOptionRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"param",
                                      		lv_param_2_0, 
                                      		"DefaultOptionParam");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1412:2: (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )*
                            loop45:
                            do {
                                int alt45=2;
                                int LA45_0 = input.LA(1);

                                if ( (LA45_0==47) ) {
                                    alt45=1;
                                }


                                switch (alt45) {
                            	case 1 :
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1412:4: otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) )
                            	    {
                            	    otherlv_3=(Token)match(input,47,FOLLOW_47_in_ruleURLOption2904); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_3, grammarAccess.getURLOptionAccess().getCommaKeyword_1_1_1_0());
                            	          
                            	    }
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1416:1: ( (lv_param_4_0= ruleDefaultOptionParam ) )
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1417:1: (lv_param_4_0= ruleDefaultOptionParam )
                            	    {
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1417:1: (lv_param_4_0= ruleDefaultOptionParam )
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1418:3: lv_param_4_0= ruleDefaultOptionParam
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getURLOptionAccess().getParamDefaultOptionParamParserRuleCall_1_1_1_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FOLLOW_ruleDefaultOptionParam_in_ruleURLOption2925);
                            	    lv_param_4_0=ruleDefaultOptionParam();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getURLOptionRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"param",
                            	              		lv_param_4_0, 
                            	              		"DefaultOptionParam");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop45;
                                }
                            } while (true);


                            }
                            break;

                    }

                    otherlv_5=(Token)match(input,48,FOLLOW_48_in_ruleURLOption2941); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getURLOptionAccess().getRightParenthesisKeyword_1_2());
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleURLOption"


    // $ANTLR start "entryRuleIntegerOption"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1446:1: entryRuleIntegerOption returns [EObject current=null] : iv_ruleIntegerOption= ruleIntegerOption EOF ;
    public final EObject entryRuleIntegerOption() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIntegerOption = null;


        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1447:2: (iv_ruleIntegerOption= ruleIntegerOption EOF )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1448:2: iv_ruleIntegerOption= ruleIntegerOption EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getIntegerOptionRule()); 
            }
            pushFollow(FOLLOW_ruleIntegerOption_in_entryRuleIntegerOption2979);
            iv_ruleIntegerOption=ruleIntegerOption();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleIntegerOption; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleIntegerOption2989); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIntegerOption"


    // $ANTLR start "ruleIntegerOption"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1455:1: ruleIntegerOption returns [EObject current=null] : ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )? ) ;
    public final EObject ruleIntegerOption() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_param_2_0 = null;

        EObject lv_param_4_0 = null;


         enterRule(); 
            
        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1458:28: ( ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )? ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1459:1: ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )? )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1459:1: ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )? )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1459:2: () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )?
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1459:2: ()
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1460:2: 
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getIntegerOptionAccess().getIntegerOptionAction_0(),
                          current);
                  
            }

            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1468:2: (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )?
            int alt50=2;
            int LA50_0 = input.LA(1);

            if ( (LA50_0==46) ) {
                alt50=1;
            }
            switch (alt50) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1468:4: otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')'
                    {
                    otherlv_1=(Token)match(input,46,FOLLOW_46_in_ruleIntegerOption3039); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getIntegerOptionAccess().getLeftParenthesisKeyword_1_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1472:1: ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )?
                    int alt49=2;
                    int LA49_0 = input.LA(1);

                    if ( (LA49_0==14||LA49_0==17||LA49_0==32||LA49_0==49) ) {
                        alt49=1;
                    }
                    switch (alt49) {
                        case 1 :
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1472:2: ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )*
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1472:2: ( (lv_param_2_0= ruleDefaultOptionParam ) )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1473:1: (lv_param_2_0= ruleDefaultOptionParam )
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1473:1: (lv_param_2_0= ruleDefaultOptionParam )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1474:3: lv_param_2_0= ruleDefaultOptionParam
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getIntegerOptionAccess().getParamDefaultOptionParamParserRuleCall_1_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleDefaultOptionParam_in_ruleIntegerOption3061);
                            lv_param_2_0=ruleDefaultOptionParam();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getIntegerOptionRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"param",
                                      		lv_param_2_0, 
                                      		"DefaultOptionParam");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1490:2: (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )*
                            loop48:
                            do {
                                int alt48=2;
                                int LA48_0 = input.LA(1);

                                if ( (LA48_0==47) ) {
                                    alt48=1;
                                }


                                switch (alt48) {
                            	case 1 :
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1490:4: otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) )
                            	    {
                            	    otherlv_3=(Token)match(input,47,FOLLOW_47_in_ruleIntegerOption3074); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_3, grammarAccess.getIntegerOptionAccess().getCommaKeyword_1_1_1_0());
                            	          
                            	    }
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1494:1: ( (lv_param_4_0= ruleDefaultOptionParam ) )
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1495:1: (lv_param_4_0= ruleDefaultOptionParam )
                            	    {
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1495:1: (lv_param_4_0= ruleDefaultOptionParam )
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1496:3: lv_param_4_0= ruleDefaultOptionParam
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getIntegerOptionAccess().getParamDefaultOptionParamParserRuleCall_1_1_1_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FOLLOW_ruleDefaultOptionParam_in_ruleIntegerOption3095);
                            	    lv_param_4_0=ruleDefaultOptionParam();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getIntegerOptionRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"param",
                            	              		lv_param_4_0, 
                            	              		"DefaultOptionParam");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop48;
                                }
                            } while (true);


                            }
                            break;

                    }

                    otherlv_5=(Token)match(input,48,FOLLOW_48_in_ruleIntegerOption3111); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getIntegerOptionAccess().getRightParenthesisKeyword_1_2());
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIntegerOption"


    // $ANTLR start "entryRuleBooleanOption"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1524:1: entryRuleBooleanOption returns [EObject current=null] : iv_ruleBooleanOption= ruleBooleanOption EOF ;
    public final EObject entryRuleBooleanOption() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBooleanOption = null;


        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1525:2: (iv_ruleBooleanOption= ruleBooleanOption EOF )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1526:2: iv_ruleBooleanOption= ruleBooleanOption EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getBooleanOptionRule()); 
            }
            pushFollow(FOLLOW_ruleBooleanOption_in_entryRuleBooleanOption3149);
            iv_ruleBooleanOption=ruleBooleanOption();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleBooleanOption; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleBooleanOption3159); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBooleanOption"


    // $ANTLR start "ruleBooleanOption"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1533:1: ruleBooleanOption returns [EObject current=null] : ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )? ) ;
    public final EObject ruleBooleanOption() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_param_2_0 = null;

        EObject lv_param_4_0 = null;


         enterRule(); 
            
        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1536:28: ( ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )? ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1537:1: ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )? )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1537:1: ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )? )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1537:2: () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )?
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1537:2: ()
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1538:2: 
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getBooleanOptionAccess().getBooleanOptionAction_0(),
                          current);
                  
            }

            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1546:2: (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )?
            int alt53=2;
            int LA53_0 = input.LA(1);

            if ( (LA53_0==46) ) {
                alt53=1;
            }
            switch (alt53) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1546:4: otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')'
                    {
                    otherlv_1=(Token)match(input,46,FOLLOW_46_in_ruleBooleanOption3209); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getBooleanOptionAccess().getLeftParenthesisKeyword_1_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1550:1: ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )?
                    int alt52=2;
                    int LA52_0 = input.LA(1);

                    if ( (LA52_0==14||LA52_0==17||LA52_0==32||LA52_0==49) ) {
                        alt52=1;
                    }
                    switch (alt52) {
                        case 1 :
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1550:2: ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )*
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1550:2: ( (lv_param_2_0= ruleDefaultOptionParam ) )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1551:1: (lv_param_2_0= ruleDefaultOptionParam )
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1551:1: (lv_param_2_0= ruleDefaultOptionParam )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1552:3: lv_param_2_0= ruleDefaultOptionParam
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getBooleanOptionAccess().getParamDefaultOptionParamParserRuleCall_1_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleDefaultOptionParam_in_ruleBooleanOption3231);
                            lv_param_2_0=ruleDefaultOptionParam();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getBooleanOptionRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"param",
                                      		lv_param_2_0, 
                                      		"DefaultOptionParam");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1568:2: (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )*
                            loop51:
                            do {
                                int alt51=2;
                                int LA51_0 = input.LA(1);

                                if ( (LA51_0==47) ) {
                                    alt51=1;
                                }


                                switch (alt51) {
                            	case 1 :
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1568:4: otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) )
                            	    {
                            	    otherlv_3=(Token)match(input,47,FOLLOW_47_in_ruleBooleanOption3244); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_3, grammarAccess.getBooleanOptionAccess().getCommaKeyword_1_1_1_0());
                            	          
                            	    }
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1572:1: ( (lv_param_4_0= ruleDefaultOptionParam ) )
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1573:1: (lv_param_4_0= ruleDefaultOptionParam )
                            	    {
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1573:1: (lv_param_4_0= ruleDefaultOptionParam )
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1574:3: lv_param_4_0= ruleDefaultOptionParam
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getBooleanOptionAccess().getParamDefaultOptionParamParserRuleCall_1_1_1_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FOLLOW_ruleDefaultOptionParam_in_ruleBooleanOption3265);
                            	    lv_param_4_0=ruleDefaultOptionParam();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getBooleanOptionRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"param",
                            	              		lv_param_4_0, 
                            	              		"DefaultOptionParam");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop51;
                                }
                            } while (true);


                            }
                            break;

                    }

                    otherlv_5=(Token)match(input,48,FOLLOW_48_in_ruleBooleanOption3281); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getBooleanOptionAccess().getRightParenthesisKeyword_1_2());
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBooleanOption"


    // $ANTLR start "entryRuleDateOption"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1602:1: entryRuleDateOption returns [EObject current=null] : iv_ruleDateOption= ruleDateOption EOF ;
    public final EObject entryRuleDateOption() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDateOption = null;


        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1603:2: (iv_ruleDateOption= ruleDateOption EOF )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1604:2: iv_ruleDateOption= ruleDateOption EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getDateOptionRule()); 
            }
            pushFollow(FOLLOW_ruleDateOption_in_entryRuleDateOption3319);
            iv_ruleDateOption=ruleDateOption();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDateOption; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleDateOption3329); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDateOption"


    // $ANTLR start "ruleDateOption"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1611:1: ruleDateOption returns [EObject current=null] : ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )? ) ;
    public final EObject ruleDateOption() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_param_2_0 = null;

        EObject lv_param_4_0 = null;


         enterRule(); 
            
        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1614:28: ( ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )? ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1615:1: ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )? )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1615:1: ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )? )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1615:2: () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )?
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1615:2: ()
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1616:2: 
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getDateOptionAccess().getDateOptionAction_0(),
                          current);
                  
            }

            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1624:2: (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )?
            int alt56=2;
            int LA56_0 = input.LA(1);

            if ( (LA56_0==46) ) {
                alt56=1;
            }
            switch (alt56) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1624:4: otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')'
                    {
                    otherlv_1=(Token)match(input,46,FOLLOW_46_in_ruleDateOption3379); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getDateOptionAccess().getLeftParenthesisKeyword_1_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1628:1: ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )?
                    int alt55=2;
                    int LA55_0 = input.LA(1);

                    if ( (LA55_0==14||LA55_0==17||LA55_0==32||LA55_0==49) ) {
                        alt55=1;
                    }
                    switch (alt55) {
                        case 1 :
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1628:2: ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )*
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1628:2: ( (lv_param_2_0= ruleDefaultOptionParam ) )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1629:1: (lv_param_2_0= ruleDefaultOptionParam )
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1629:1: (lv_param_2_0= ruleDefaultOptionParam )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1630:3: lv_param_2_0= ruleDefaultOptionParam
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getDateOptionAccess().getParamDefaultOptionParamParserRuleCall_1_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleDefaultOptionParam_in_ruleDateOption3401);
                            lv_param_2_0=ruleDefaultOptionParam();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getDateOptionRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"param",
                                      		lv_param_2_0, 
                                      		"DefaultOptionParam");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1646:2: (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )*
                            loop54:
                            do {
                                int alt54=2;
                                int LA54_0 = input.LA(1);

                                if ( (LA54_0==47) ) {
                                    alt54=1;
                                }


                                switch (alt54) {
                            	case 1 :
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1646:4: otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) )
                            	    {
                            	    otherlv_3=(Token)match(input,47,FOLLOW_47_in_ruleDateOption3414); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_3, grammarAccess.getDateOptionAccess().getCommaKeyword_1_1_1_0());
                            	          
                            	    }
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1650:1: ( (lv_param_4_0= ruleDefaultOptionParam ) )
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1651:1: (lv_param_4_0= ruleDefaultOptionParam )
                            	    {
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1651:1: (lv_param_4_0= ruleDefaultOptionParam )
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1652:3: lv_param_4_0= ruleDefaultOptionParam
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getDateOptionAccess().getParamDefaultOptionParamParserRuleCall_1_1_1_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FOLLOW_ruleDefaultOptionParam_in_ruleDateOption3435);
                            	    lv_param_4_0=ruleDefaultOptionParam();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getDateOptionRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"param",
                            	              		lv_param_4_0, 
                            	              		"DefaultOptionParam");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop54;
                                }
                            } while (true);


                            }
                            break;

                    }

                    otherlv_5=(Token)match(input,48,FOLLOW_48_in_ruleDateOption3451); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getDateOptionAccess().getRightParenthesisKeyword_1_2());
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDateOption"


    // $ANTLR start "entryRuleColourOption"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1680:1: entryRuleColourOption returns [EObject current=null] : iv_ruleColourOption= ruleColourOption EOF ;
    public final EObject entryRuleColourOption() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleColourOption = null;


        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1681:2: (iv_ruleColourOption= ruleColourOption EOF )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1682:2: iv_ruleColourOption= ruleColourOption EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getColourOptionRule()); 
            }
            pushFollow(FOLLOW_ruleColourOption_in_entryRuleColourOption3489);
            iv_ruleColourOption=ruleColourOption();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleColourOption; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleColourOption3499); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleColourOption"


    // $ANTLR start "ruleColourOption"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1689:1: ruleColourOption returns [EObject current=null] : ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )? ) ;
    public final EObject ruleColourOption() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_param_2_0 = null;

        EObject lv_param_4_0 = null;


         enterRule(); 
            
        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1692:28: ( ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )? ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1693:1: ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )? )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1693:1: ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )? )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1693:2: () (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )?
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1693:2: ()
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1694:2: 
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getColourOptionAccess().getColourOptionAction_0(),
                          current);
                  
            }

            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1702:2: (otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')' )?
            int alt59=2;
            int LA59_0 = input.LA(1);

            if ( (LA59_0==46) ) {
                alt59=1;
            }
            switch (alt59) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1702:4: otherlv_1= '(' ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )? otherlv_5= ')'
                    {
                    otherlv_1=(Token)match(input,46,FOLLOW_46_in_ruleColourOption3549); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getColourOptionAccess().getLeftParenthesisKeyword_1_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1706:1: ( ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )* )?
                    int alt58=2;
                    int LA58_0 = input.LA(1);

                    if ( (LA58_0==14||LA58_0==17||LA58_0==32||LA58_0==49) ) {
                        alt58=1;
                    }
                    switch (alt58) {
                        case 1 :
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1706:2: ( (lv_param_2_0= ruleDefaultOptionParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )*
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1706:2: ( (lv_param_2_0= ruleDefaultOptionParam ) )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1707:1: (lv_param_2_0= ruleDefaultOptionParam )
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1707:1: (lv_param_2_0= ruleDefaultOptionParam )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1708:3: lv_param_2_0= ruleDefaultOptionParam
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getColourOptionAccess().getParamDefaultOptionParamParserRuleCall_1_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleDefaultOptionParam_in_ruleColourOption3571);
                            lv_param_2_0=ruleDefaultOptionParam();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getColourOptionRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"param",
                                      		lv_param_2_0, 
                                      		"DefaultOptionParam");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1724:2: (otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) ) )*
                            loop57:
                            do {
                                int alt57=2;
                                int LA57_0 = input.LA(1);

                                if ( (LA57_0==47) ) {
                                    alt57=1;
                                }


                                switch (alt57) {
                            	case 1 :
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1724:4: otherlv_3= ',' ( (lv_param_4_0= ruleDefaultOptionParam ) )
                            	    {
                            	    otherlv_3=(Token)match(input,47,FOLLOW_47_in_ruleColourOption3584); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_3, grammarAccess.getColourOptionAccess().getCommaKeyword_1_1_1_0());
                            	          
                            	    }
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1728:1: ( (lv_param_4_0= ruleDefaultOptionParam ) )
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1729:1: (lv_param_4_0= ruleDefaultOptionParam )
                            	    {
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1729:1: (lv_param_4_0= ruleDefaultOptionParam )
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1730:3: lv_param_4_0= ruleDefaultOptionParam
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getColourOptionAccess().getParamDefaultOptionParamParserRuleCall_1_1_1_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FOLLOW_ruleDefaultOptionParam_in_ruleColourOption3605);
                            	    lv_param_4_0=ruleDefaultOptionParam();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getColourOptionRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"param",
                            	              		lv_param_4_0, 
                            	              		"DefaultOptionParam");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop57;
                                }
                            } while (true);


                            }
                            break;

                    }

                    otherlv_5=(Token)match(input,48,FOLLOW_48_in_ruleColourOption3621); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getColourOptionAccess().getRightParenthesisKeyword_1_2());
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleColourOption"


    // $ANTLR start "entryRuleCustomOption"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1758:1: entryRuleCustomOption returns [EObject current=null] : iv_ruleCustomOption= ruleCustomOption EOF ;
    public final EObject entryRuleCustomOption() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCustomOption = null;


        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1759:2: (iv_ruleCustomOption= ruleCustomOption EOF )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1760:2: iv_ruleCustomOption= ruleCustomOption EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getCustomOptionRule()); 
            }
            pushFollow(FOLLOW_ruleCustomOption_in_entryRuleCustomOption3659);
            iv_ruleCustomOption=ruleCustomOption();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleCustomOption; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleCustomOption3669); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCustomOption"


    // $ANTLR start "ruleCustomOption"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1767:1: ruleCustomOption returns [EObject current=null] : ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleCustomParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleCustomParam ) ) )* )? otherlv_5= ')' )? ) ;
    public final EObject ruleCustomOption() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_param_2_0 = null;

        EObject lv_param_4_0 = null;


         enterRule(); 
            
        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1770:28: ( ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleCustomParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleCustomParam ) ) )* )? otherlv_5= ')' )? ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1771:1: ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleCustomParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleCustomParam ) ) )* )? otherlv_5= ')' )? )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1771:1: ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleCustomParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleCustomParam ) ) )* )? otherlv_5= ')' )? )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1771:2: () (otherlv_1= '(' ( ( (lv_param_2_0= ruleCustomParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleCustomParam ) ) )* )? otherlv_5= ')' )?
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1771:2: ()
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1772:2: 
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getCustomOptionAccess().getCustomOptionAction_0(),
                          current);
                  
            }

            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1780:2: (otherlv_1= '(' ( ( (lv_param_2_0= ruleCustomParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleCustomParam ) ) )* )? otherlv_5= ')' )?
            int alt62=2;
            int LA62_0 = input.LA(1);

            if ( (LA62_0==46) ) {
                alt62=1;
            }
            switch (alt62) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1780:4: otherlv_1= '(' ( ( (lv_param_2_0= ruleCustomParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleCustomParam ) ) )* )? otherlv_5= ')'
                    {
                    otherlv_1=(Token)match(input,46,FOLLOW_46_in_ruleCustomOption3719); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getCustomOptionAccess().getLeftParenthesisKeyword_1_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1784:1: ( ( (lv_param_2_0= ruleCustomParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleCustomParam ) ) )* )?
                    int alt61=2;
                    int LA61_0 = input.LA(1);

                    if ( (LA61_0==RULE_ID||LA61_0==14||LA61_0==17||LA61_0==32||LA61_0==49||LA61_0==54) ) {
                        alt61=1;
                    }
                    switch (alt61) {
                        case 1 :
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1784:2: ( (lv_param_2_0= ruleCustomParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleCustomParam ) ) )*
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1784:2: ( (lv_param_2_0= ruleCustomParam ) )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1785:1: (lv_param_2_0= ruleCustomParam )
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1785:1: (lv_param_2_0= ruleCustomParam )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1786:3: lv_param_2_0= ruleCustomParam
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getCustomOptionAccess().getParamCustomParamParserRuleCall_1_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleCustomParam_in_ruleCustomOption3741);
                            lv_param_2_0=ruleCustomParam();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getCustomOptionRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"param",
                                      		lv_param_2_0, 
                                      		"CustomParam");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1802:2: (otherlv_3= ',' ( (lv_param_4_0= ruleCustomParam ) ) )*
                            loop60:
                            do {
                                int alt60=2;
                                int LA60_0 = input.LA(1);

                                if ( (LA60_0==47) ) {
                                    alt60=1;
                                }


                                switch (alt60) {
                            	case 1 :
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1802:4: otherlv_3= ',' ( (lv_param_4_0= ruleCustomParam ) )
                            	    {
                            	    otherlv_3=(Token)match(input,47,FOLLOW_47_in_ruleCustomOption3754); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_3, grammarAccess.getCustomOptionAccess().getCommaKeyword_1_1_1_0());
                            	          
                            	    }
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1806:1: ( (lv_param_4_0= ruleCustomParam ) )
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1807:1: (lv_param_4_0= ruleCustomParam )
                            	    {
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1807:1: (lv_param_4_0= ruleCustomParam )
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1808:3: lv_param_4_0= ruleCustomParam
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getCustomOptionAccess().getParamCustomParamParserRuleCall_1_1_1_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FOLLOW_ruleCustomParam_in_ruleCustomOption3775);
                            	    lv_param_4_0=ruleCustomParam();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getCustomOptionRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"param",
                            	              		lv_param_4_0, 
                            	              		"CustomParam");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop60;
                                }
                            } while (true);


                            }
                            break;

                    }

                    otherlv_5=(Token)match(input,48,FOLLOW_48_in_ruleCustomOption3791); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getCustomOptionAccess().getRightParenthesisKeyword_1_2());
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCustomOption"


    // $ANTLR start "entryRuleStringOption"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1836:1: entryRuleStringOption returns [EObject current=null] : iv_ruleStringOption= ruleStringOption EOF ;
    public final EObject entryRuleStringOption() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStringOption = null;


        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1837:2: (iv_ruleStringOption= ruleStringOption EOF )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1838:2: iv_ruleStringOption= ruleStringOption EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getStringOptionRule()); 
            }
            pushFollow(FOLLOW_ruleStringOption_in_entryRuleStringOption3829);
            iv_ruleStringOption=ruleStringOption();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleStringOption; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleStringOption3839); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleStringOption"


    // $ANTLR start "ruleStringOption"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1845:1: ruleStringOption returns [EObject current=null] : ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleStringParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleStringParam ) ) )* )? otherlv_5= ')' )? ) ;
    public final EObject ruleStringOption() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_param_2_0 = null;

        EObject lv_param_4_0 = null;


         enterRule(); 
            
        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1848:28: ( ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleStringParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleStringParam ) ) )* )? otherlv_5= ')' )? ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1849:1: ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleStringParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleStringParam ) ) )* )? otherlv_5= ')' )? )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1849:1: ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleStringParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleStringParam ) ) )* )? otherlv_5= ')' )? )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1849:2: () (otherlv_1= '(' ( ( (lv_param_2_0= ruleStringParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleStringParam ) ) )* )? otherlv_5= ')' )?
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1849:2: ()
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1850:2: 
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getStringOptionAccess().getStringOptionAction_0(),
                          current);
                  
            }

            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1858:2: (otherlv_1= '(' ( ( (lv_param_2_0= ruleStringParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleStringParam ) ) )* )? otherlv_5= ')' )?
            int alt65=2;
            int LA65_0 = input.LA(1);

            if ( (LA65_0==46) ) {
                alt65=1;
            }
            switch (alt65) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1858:4: otherlv_1= '(' ( ( (lv_param_2_0= ruleStringParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleStringParam ) ) )* )? otherlv_5= ')'
                    {
                    otherlv_1=(Token)match(input,46,FOLLOW_46_in_ruleStringOption3889); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getStringOptionAccess().getLeftParenthesisKeyword_1_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1862:1: ( ( (lv_param_2_0= ruleStringParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleStringParam ) ) )* )?
                    int alt64=2;
                    int LA64_0 = input.LA(1);

                    if ( (LA64_0==14||LA64_0==17||LA64_0==32||LA64_0==49||(LA64_0>=52 && LA64_0<=53)) ) {
                        alt64=1;
                    }
                    switch (alt64) {
                        case 1 :
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1862:2: ( (lv_param_2_0= ruleStringParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleStringParam ) ) )*
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1862:2: ( (lv_param_2_0= ruleStringParam ) )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1863:1: (lv_param_2_0= ruleStringParam )
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1863:1: (lv_param_2_0= ruleStringParam )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1864:3: lv_param_2_0= ruleStringParam
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getStringOptionAccess().getParamStringParamParserRuleCall_1_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleStringParam_in_ruleStringOption3911);
                            lv_param_2_0=ruleStringParam();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getStringOptionRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"param",
                                      		lv_param_2_0, 
                                      		"StringParam");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1880:2: (otherlv_3= ',' ( (lv_param_4_0= ruleStringParam ) ) )*
                            loop63:
                            do {
                                int alt63=2;
                                int LA63_0 = input.LA(1);

                                if ( (LA63_0==47) ) {
                                    alt63=1;
                                }


                                switch (alt63) {
                            	case 1 :
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1880:4: otherlv_3= ',' ( (lv_param_4_0= ruleStringParam ) )
                            	    {
                            	    otherlv_3=(Token)match(input,47,FOLLOW_47_in_ruleStringOption3924); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_3, grammarAccess.getStringOptionAccess().getCommaKeyword_1_1_1_0());
                            	          
                            	    }
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1884:1: ( (lv_param_4_0= ruleStringParam ) )
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1885:1: (lv_param_4_0= ruleStringParam )
                            	    {
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1885:1: (lv_param_4_0= ruleStringParam )
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1886:3: lv_param_4_0= ruleStringParam
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getStringOptionAccess().getParamStringParamParserRuleCall_1_1_1_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FOLLOW_ruleStringParam_in_ruleStringOption3945);
                            	    lv_param_4_0=ruleStringParam();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getStringOptionRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"param",
                            	              		lv_param_4_0, 
                            	              		"StringParam");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop63;
                                }
                            } while (true);


                            }
                            break;

                    }

                    otherlv_5=(Token)match(input,48,FOLLOW_48_in_ruleStringOption3961); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getStringOptionAccess().getRightParenthesisKeyword_1_2());
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleStringOption"


    // $ANTLR start "entryRuleTextOption"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1914:1: entryRuleTextOption returns [EObject current=null] : iv_ruleTextOption= ruleTextOption EOF ;
    public final EObject entryRuleTextOption() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTextOption = null;


        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1915:2: (iv_ruleTextOption= ruleTextOption EOF )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1916:2: iv_ruleTextOption= ruleTextOption EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTextOptionRule()); 
            }
            pushFollow(FOLLOW_ruleTextOption_in_entryRuleTextOption3999);
            iv_ruleTextOption=ruleTextOption();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTextOption; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleTextOption4009); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTextOption"


    // $ANTLR start "ruleTextOption"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1923:1: ruleTextOption returns [EObject current=null] : ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleTextParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleTextParam ) ) )* )? otherlv_5= ')' )? ) ;
    public final EObject ruleTextOption() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_param_2_0 = null;

        EObject lv_param_4_0 = null;


         enterRule(); 
            
        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1926:28: ( ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleTextParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleTextParam ) ) )* )? otherlv_5= ')' )? ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1927:1: ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleTextParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleTextParam ) ) )* )? otherlv_5= ')' )? )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1927:1: ( () (otherlv_1= '(' ( ( (lv_param_2_0= ruleTextParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleTextParam ) ) )* )? otherlv_5= ')' )? )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1927:2: () (otherlv_1= '(' ( ( (lv_param_2_0= ruleTextParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleTextParam ) ) )* )? otherlv_5= ')' )?
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1927:2: ()
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1928:2: 
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getTextOptionAccess().getTextOptionAction_0(),
                          current);
                  
            }

            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1936:2: (otherlv_1= '(' ( ( (lv_param_2_0= ruleTextParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleTextParam ) ) )* )? otherlv_5= ')' )?
            int alt68=2;
            int LA68_0 = input.LA(1);

            if ( (LA68_0==46) ) {
                alt68=1;
            }
            switch (alt68) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1936:4: otherlv_1= '(' ( ( (lv_param_2_0= ruleTextParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleTextParam ) ) )* )? otherlv_5= ')'
                    {
                    otherlv_1=(Token)match(input,46,FOLLOW_46_in_ruleTextOption4059); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getTextOptionAccess().getLeftParenthesisKeyword_1_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1940:1: ( ( (lv_param_2_0= ruleTextParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleTextParam ) ) )* )?
                    int alt67=2;
                    int LA67_0 = input.LA(1);

                    if ( (LA67_0==14||LA67_0==17||LA67_0==32||LA67_0==49||(LA67_0>=51 && LA67_0<=53)) ) {
                        alt67=1;
                    }
                    switch (alt67) {
                        case 1 :
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1940:2: ( (lv_param_2_0= ruleTextParam ) ) (otherlv_3= ',' ( (lv_param_4_0= ruleTextParam ) ) )*
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1940:2: ( (lv_param_2_0= ruleTextParam ) )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1941:1: (lv_param_2_0= ruleTextParam )
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1941:1: (lv_param_2_0= ruleTextParam )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1942:3: lv_param_2_0= ruleTextParam
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getTextOptionAccess().getParamTextParamParserRuleCall_1_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleTextParam_in_ruleTextOption4081);
                            lv_param_2_0=ruleTextParam();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getTextOptionRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"param",
                                      		lv_param_2_0, 
                                      		"TextParam");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1958:2: (otherlv_3= ',' ( (lv_param_4_0= ruleTextParam ) ) )*
                            loop66:
                            do {
                                int alt66=2;
                                int LA66_0 = input.LA(1);

                                if ( (LA66_0==47) ) {
                                    alt66=1;
                                }


                                switch (alt66) {
                            	case 1 :
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1958:4: otherlv_3= ',' ( (lv_param_4_0= ruleTextParam ) )
                            	    {
                            	    otherlv_3=(Token)match(input,47,FOLLOW_47_in_ruleTextOption4094); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_3, grammarAccess.getTextOptionAccess().getCommaKeyword_1_1_1_0());
                            	          
                            	    }
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1962:1: ( (lv_param_4_0= ruleTextParam ) )
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1963:1: (lv_param_4_0= ruleTextParam )
                            	    {
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1963:1: (lv_param_4_0= ruleTextParam )
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1964:3: lv_param_4_0= ruleTextParam
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getTextOptionAccess().getParamTextParamParserRuleCall_1_1_1_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FOLLOW_ruleTextParam_in_ruleTextOption4115);
                            	    lv_param_4_0=ruleTextParam();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getTextOptionRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"param",
                            	              		lv_param_4_0, 
                            	              		"TextParam");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop66;
                                }
                            } while (true);


                            }
                            break;

                    }

                    otherlv_5=(Token)match(input,48,FOLLOW_48_in_ruleTextOption4131); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getTextOptionAccess().getRightParenthesisKeyword_1_2());
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTextOption"


    // $ANTLR start "entryRuleDefaultOptionParam"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1992:1: entryRuleDefaultOptionParam returns [EObject current=null] : iv_ruleDefaultOptionParam= ruleDefaultOptionParam EOF ;
    public final EObject entryRuleDefaultOptionParam() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDefaultOptionParam = null;


        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1993:2: (iv_ruleDefaultOptionParam= ruleDefaultOptionParam EOF )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:1994:2: iv_ruleDefaultOptionParam= ruleDefaultOptionParam EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getDefaultOptionParamRule()); 
            }
            pushFollow(FOLLOW_ruleDefaultOptionParam_in_entryRuleDefaultOptionParam4169);
            iv_ruleDefaultOptionParam=ruleDefaultOptionParam();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDefaultOptionParam; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleDefaultOptionParam4179); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDefaultOptionParam"


    // $ANTLR start "ruleDefaultOptionParam"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2001:1: ruleDefaultOptionParam returns [EObject current=null] : ( ( () ( (lv_site_1_0= 'site' ) ) ) | (otherlv_2= 'default' (otherlv_3= '=' )? ( (lv_defaultValue_4_0= RULE_STRING ) ) ) | (otherlv_5= 'title' (otherlv_6= '=' )? ( (lv_title_7_0= RULE_STRING ) ) ) | (otherlv_8= 'description' (otherlv_9= '=' )? ( (lv_description_10_0= RULE_STRING ) ) ) ) ;
    public final EObject ruleDefaultOptionParam() throws RecognitionException {
        EObject current = null;

        Token lv_site_1_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token lv_defaultValue_4_0=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token lv_title_7_0=null;
        Token otherlv_8=null;
        Token otherlv_9=null;
        Token lv_description_10_0=null;

         enterRule(); 
            
        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2004:28: ( ( ( () ( (lv_site_1_0= 'site' ) ) ) | (otherlv_2= 'default' (otherlv_3= '=' )? ( (lv_defaultValue_4_0= RULE_STRING ) ) ) | (otherlv_5= 'title' (otherlv_6= '=' )? ( (lv_title_7_0= RULE_STRING ) ) ) | (otherlv_8= 'description' (otherlv_9= '=' )? ( (lv_description_10_0= RULE_STRING ) ) ) ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2005:1: ( ( () ( (lv_site_1_0= 'site' ) ) ) | (otherlv_2= 'default' (otherlv_3= '=' )? ( (lv_defaultValue_4_0= RULE_STRING ) ) ) | (otherlv_5= 'title' (otherlv_6= '=' )? ( (lv_title_7_0= RULE_STRING ) ) ) | (otherlv_8= 'description' (otherlv_9= '=' )? ( (lv_description_10_0= RULE_STRING ) ) ) )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2005:1: ( ( () ( (lv_site_1_0= 'site' ) ) ) | (otherlv_2= 'default' (otherlv_3= '=' )? ( (lv_defaultValue_4_0= RULE_STRING ) ) ) | (otherlv_5= 'title' (otherlv_6= '=' )? ( (lv_title_7_0= RULE_STRING ) ) ) | (otherlv_8= 'description' (otherlv_9= '=' )? ( (lv_description_10_0= RULE_STRING ) ) ) )
            int alt72=4;
            switch ( input.LA(1) ) {
            case 32:
                {
                alt72=1;
                }
                break;
            case 49:
                {
                alt72=2;
                }
                break;
            case 14:
                {
                alt72=3;
                }
                break;
            case 17:
                {
                alt72=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 72, 0, input);

                throw nvae;
            }

            switch (alt72) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2005:2: ( () ( (lv_site_1_0= 'site' ) ) )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2005:2: ( () ( (lv_site_1_0= 'site' ) ) )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2005:3: () ( (lv_site_1_0= 'site' ) )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2005:3: ()
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2006:2: 
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElement(
                                  grammarAccess.getDefaultOptionParamAccess().getDefaultOptionParamAction_0_0(),
                                  current);
                          
                    }

                    }

                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2014:2: ( (lv_site_1_0= 'site' ) )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2015:1: (lv_site_1_0= 'site' )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2015:1: (lv_site_1_0= 'site' )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2016:3: lv_site_1_0= 'site'
                    {
                    lv_site_1_0=(Token)match(input,32,FOLLOW_32_in_ruleDefaultOptionParam4235); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_site_1_0, grammarAccess.getDefaultOptionParamAccess().getSiteSiteKeyword_0_1_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getDefaultOptionParamRule());
                      	        }
                             		setWithLastConsumed(current, "site", true, "site");
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2030:6: (otherlv_2= 'default' (otherlv_3= '=' )? ( (lv_defaultValue_4_0= RULE_STRING ) ) )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2030:6: (otherlv_2= 'default' (otherlv_3= '=' )? ( (lv_defaultValue_4_0= RULE_STRING ) ) )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2030:8: otherlv_2= 'default' (otherlv_3= '=' )? ( (lv_defaultValue_4_0= RULE_STRING ) )
                    {
                    otherlv_2=(Token)match(input,49,FOLLOW_49_in_ruleDefaultOptionParam4268); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getDefaultOptionParamAccess().getDefaultKeyword_1_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2034:1: (otherlv_3= '=' )?
                    int alt69=2;
                    int LA69_0 = input.LA(1);

                    if ( (LA69_0==50) ) {
                        alt69=1;
                    }
                    switch (alt69) {
                        case 1 :
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2034:3: otherlv_3= '='
                            {
                            otherlv_3=(Token)match(input,50,FOLLOW_50_in_ruleDefaultOptionParam4281); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_3, grammarAccess.getDefaultOptionParamAccess().getEqualsSignKeyword_1_1());
                                  
                            }

                            }
                            break;

                    }

                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2038:3: ( (lv_defaultValue_4_0= RULE_STRING ) )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2039:1: (lv_defaultValue_4_0= RULE_STRING )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2039:1: (lv_defaultValue_4_0= RULE_STRING )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2040:3: lv_defaultValue_4_0= RULE_STRING
                    {
                    lv_defaultValue_4_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleDefaultOptionParam4300); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_defaultValue_4_0, grammarAccess.getDefaultOptionParamAccess().getDefaultValueSTRINGTerminalRuleCall_1_2_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getDefaultOptionParamRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"defaultValue",
                              		lv_defaultValue_4_0, 
                              		"STRING");
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 3 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2057:6: (otherlv_5= 'title' (otherlv_6= '=' )? ( (lv_title_7_0= RULE_STRING ) ) )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2057:6: (otherlv_5= 'title' (otherlv_6= '=' )? ( (lv_title_7_0= RULE_STRING ) ) )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2057:8: otherlv_5= 'title' (otherlv_6= '=' )? ( (lv_title_7_0= RULE_STRING ) )
                    {
                    otherlv_5=(Token)match(input,14,FOLLOW_14_in_ruleDefaultOptionParam4325); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getDefaultOptionParamAccess().getTitleKeyword_2_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2061:1: (otherlv_6= '=' )?
                    int alt70=2;
                    int LA70_0 = input.LA(1);

                    if ( (LA70_0==50) ) {
                        alt70=1;
                    }
                    switch (alt70) {
                        case 1 :
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2061:3: otherlv_6= '='
                            {
                            otherlv_6=(Token)match(input,50,FOLLOW_50_in_ruleDefaultOptionParam4338); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_6, grammarAccess.getDefaultOptionParamAccess().getEqualsSignKeyword_2_1());
                                  
                            }

                            }
                            break;

                    }

                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2065:3: ( (lv_title_7_0= RULE_STRING ) )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2066:1: (lv_title_7_0= RULE_STRING )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2066:1: (lv_title_7_0= RULE_STRING )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2067:3: lv_title_7_0= RULE_STRING
                    {
                    lv_title_7_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleDefaultOptionParam4357); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_title_7_0, grammarAccess.getDefaultOptionParamAccess().getTitleSTRINGTerminalRuleCall_2_2_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getDefaultOptionParamRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"title",
                              		lv_title_7_0, 
                              		"STRING");
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 4 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2084:6: (otherlv_8= 'description' (otherlv_9= '=' )? ( (lv_description_10_0= RULE_STRING ) ) )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2084:6: (otherlv_8= 'description' (otherlv_9= '=' )? ( (lv_description_10_0= RULE_STRING ) ) )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2084:8: otherlv_8= 'description' (otherlv_9= '=' )? ( (lv_description_10_0= RULE_STRING ) )
                    {
                    otherlv_8=(Token)match(input,17,FOLLOW_17_in_ruleDefaultOptionParam4382); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_8, grammarAccess.getDefaultOptionParamAccess().getDescriptionKeyword_3_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2088:1: (otherlv_9= '=' )?
                    int alt71=2;
                    int LA71_0 = input.LA(1);

                    if ( (LA71_0==50) ) {
                        alt71=1;
                    }
                    switch (alt71) {
                        case 1 :
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2088:3: otherlv_9= '='
                            {
                            otherlv_9=(Token)match(input,50,FOLLOW_50_in_ruleDefaultOptionParam4395); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_9, grammarAccess.getDefaultOptionParamAccess().getEqualsSignKeyword_3_1());
                                  
                            }

                            }
                            break;

                    }

                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2092:3: ( (lv_description_10_0= RULE_STRING ) )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2093:1: (lv_description_10_0= RULE_STRING )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2093:1: (lv_description_10_0= RULE_STRING )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2094:3: lv_description_10_0= RULE_STRING
                    {
                    lv_description_10_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleDefaultOptionParam4414); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_description_10_0, grammarAccess.getDefaultOptionParamAccess().getDescriptionSTRINGTerminalRuleCall_3_2_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getDefaultOptionParamRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"description",
                              		lv_description_10_0, 
                              		"STRING");
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDefaultOptionParam"


    // $ANTLR start "entryRuleTextParam"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2120:1: entryRuleTextParam returns [EObject current=null] : iv_ruleTextParam= ruleTextParam EOF ;
    public final EObject entryRuleTextParam() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTextParam = null;


        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2121:2: (iv_ruleTextParam= ruleTextParam EOF )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2122:2: iv_ruleTextParam= ruleTextParam EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTextParamRule()); 
            }
            pushFollow(FOLLOW_ruleTextParam_in_entryRuleTextParam4458);
            iv_ruleTextParam=ruleTextParam();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTextParam; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleTextParam4468); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTextParam"


    // $ANTLR start "ruleTextParam"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2129:1: ruleTextParam returns [EObject current=null] : (this_StringParam_0= ruleStringParam | ( (lv_html_1_0= 'html' ) ) ) ;
    public final EObject ruleTextParam() throws RecognitionException {
        EObject current = null;

        Token lv_html_1_0=null;
        EObject this_StringParam_0 = null;


         enterRule(); 
            
        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2132:28: ( (this_StringParam_0= ruleStringParam | ( (lv_html_1_0= 'html' ) ) ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2133:1: (this_StringParam_0= ruleStringParam | ( (lv_html_1_0= 'html' ) ) )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2133:1: (this_StringParam_0= ruleStringParam | ( (lv_html_1_0= 'html' ) ) )
            int alt73=2;
            int LA73_0 = input.LA(1);

            if ( (LA73_0==14||LA73_0==17||LA73_0==32||LA73_0==49||(LA73_0>=52 && LA73_0<=53)) ) {
                alt73=1;
            }
            else if ( (LA73_0==51) ) {
                alt73=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 73, 0, input);

                throw nvae;
            }
            switch (alt73) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2134:2: this_StringParam_0= ruleStringParam
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getTextParamAccess().getStringParamParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleStringParam_in_ruleTextParam4518);
                    this_StringParam_0=ruleStringParam();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_StringParam_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2146:6: ( (lv_html_1_0= 'html' ) )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2146:6: ( (lv_html_1_0= 'html' ) )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2147:1: (lv_html_1_0= 'html' )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2147:1: (lv_html_1_0= 'html' )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2148:3: lv_html_1_0= 'html'
                    {
                    lv_html_1_0=(Token)match(input,51,FOLLOW_51_in_ruleTextParam4541); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_html_1_0, grammarAccess.getTextParamAccess().getHtmlHtmlKeyword_1_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getTextParamRule());
                      	        }
                             		setWithLastConsumed(current, "html", true, "html");
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTextParam"


    // $ANTLR start "entryRuleStringParam"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2169:1: entryRuleStringParam returns [EObject current=null] : iv_ruleStringParam= ruleStringParam EOF ;
    public final EObject entryRuleStringParam() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStringParam = null;


        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2170:2: (iv_ruleStringParam= ruleStringParam EOF )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2171:2: iv_ruleStringParam= ruleStringParam EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getStringParamRule()); 
            }
            pushFollow(FOLLOW_ruleStringParam_in_entryRuleStringParam4590);
            iv_ruleStringParam=ruleStringParam();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleStringParam; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleStringParam4600); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleStringParam"


    // $ANTLR start "ruleStringParam"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2178:1: ruleStringParam returns [EObject current=null] : (this_DefaultOptionParam_0= ruleDefaultOptionParam | (otherlv_1= 'max' ( (lv_max_2_0= RULE_INT ) ) ) | (otherlv_3= 'min' ( (lv_min_4_0= RULE_INT ) ) ) ) ;
    public final EObject ruleStringParam() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token lv_max_2_0=null;
        Token otherlv_3=null;
        Token lv_min_4_0=null;
        EObject this_DefaultOptionParam_0 = null;


         enterRule(); 
            
        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2181:28: ( (this_DefaultOptionParam_0= ruleDefaultOptionParam | (otherlv_1= 'max' ( (lv_max_2_0= RULE_INT ) ) ) | (otherlv_3= 'min' ( (lv_min_4_0= RULE_INT ) ) ) ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2182:1: (this_DefaultOptionParam_0= ruleDefaultOptionParam | (otherlv_1= 'max' ( (lv_max_2_0= RULE_INT ) ) ) | (otherlv_3= 'min' ( (lv_min_4_0= RULE_INT ) ) ) )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2182:1: (this_DefaultOptionParam_0= ruleDefaultOptionParam | (otherlv_1= 'max' ( (lv_max_2_0= RULE_INT ) ) ) | (otherlv_3= 'min' ( (lv_min_4_0= RULE_INT ) ) ) )
            int alt74=3;
            switch ( input.LA(1) ) {
            case 14:
            case 17:
            case 32:
            case 49:
                {
                alt74=1;
                }
                break;
            case 52:
                {
                alt74=2;
                }
                break;
            case 53:
                {
                alt74=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 74, 0, input);

                throw nvae;
            }

            switch (alt74) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2183:2: this_DefaultOptionParam_0= ruleDefaultOptionParam
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getStringParamAccess().getDefaultOptionParamParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleDefaultOptionParam_in_ruleStringParam4650);
                    this_DefaultOptionParam_0=ruleDefaultOptionParam();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_DefaultOptionParam_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2195:6: (otherlv_1= 'max' ( (lv_max_2_0= RULE_INT ) ) )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2195:6: (otherlv_1= 'max' ( (lv_max_2_0= RULE_INT ) ) )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2195:8: otherlv_1= 'max' ( (lv_max_2_0= RULE_INT ) )
                    {
                    otherlv_1=(Token)match(input,52,FOLLOW_52_in_ruleStringParam4668); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getStringParamAccess().getMaxKeyword_1_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2199:1: ( (lv_max_2_0= RULE_INT ) )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2200:1: (lv_max_2_0= RULE_INT )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2200:1: (lv_max_2_0= RULE_INT )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2201:3: lv_max_2_0= RULE_INT
                    {
                    lv_max_2_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleStringParam4685); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_max_2_0, grammarAccess.getStringParamAccess().getMaxINTTerminalRuleCall_1_1_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getStringParamRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"max",
                              		lv_max_2_0, 
                              		"INT");
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 3 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2218:6: (otherlv_3= 'min' ( (lv_min_4_0= RULE_INT ) ) )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2218:6: (otherlv_3= 'min' ( (lv_min_4_0= RULE_INT ) ) )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2218:8: otherlv_3= 'min' ( (lv_min_4_0= RULE_INT ) )
                    {
                    otherlv_3=(Token)match(input,53,FOLLOW_53_in_ruleStringParam4710); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getStringParamAccess().getMinKeyword_2_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2222:1: ( (lv_min_4_0= RULE_INT ) )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2223:1: (lv_min_4_0= RULE_INT )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2223:1: (lv_min_4_0= RULE_INT )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2224:3: lv_min_4_0= RULE_INT
                    {
                    lv_min_4_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleStringParam4727); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_min_4_0, grammarAccess.getStringParamAccess().getMinINTTerminalRuleCall_2_1_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getStringParamRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"min",
                              		lv_min_4_0, 
                              		"INT");
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleStringParam"


    // $ANTLR start "entryRuleSelectParam"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2248:1: entryRuleSelectParam returns [EObject current=null] : iv_ruleSelectParam= ruleSelectParam EOF ;
    public final EObject entryRuleSelectParam() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSelectParam = null;


        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2249:2: (iv_ruleSelectParam= ruleSelectParam EOF )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2250:2: iv_ruleSelectParam= ruleSelectParam EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSelectParamRule()); 
            }
            pushFollow(FOLLOW_ruleSelectParam_in_entryRuleSelectParam4769);
            iv_ruleSelectParam=ruleSelectParam();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSelectParam; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleSelectParam4779); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSelectParam"


    // $ANTLR start "ruleSelectParam"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2257:1: ruleSelectParam returns [EObject current=null] : (this_DefaultOptionParam_0= ruleDefaultOptionParam | ( (lv_select_1_0= ruleChoiceFn ) ) ) ;
    public final EObject ruleSelectParam() throws RecognitionException {
        EObject current = null;

        EObject this_DefaultOptionParam_0 = null;

        EObject lv_select_1_0 = null;


         enterRule(); 
            
        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2260:28: ( (this_DefaultOptionParam_0= ruleDefaultOptionParam | ( (lv_select_1_0= ruleChoiceFn ) ) ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2261:1: (this_DefaultOptionParam_0= ruleDefaultOptionParam | ( (lv_select_1_0= ruleChoiceFn ) ) )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2261:1: (this_DefaultOptionParam_0= ruleDefaultOptionParam | ( (lv_select_1_0= ruleChoiceFn ) ) )
            int alt75=2;
            int LA75_0 = input.LA(1);

            if ( (LA75_0==14||LA75_0==17||LA75_0==32||LA75_0==49) ) {
                alt75=1;
            }
            else if ( (LA75_0==RULE_ID) ) {
                alt75=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 75, 0, input);

                throw nvae;
            }
            switch (alt75) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2262:2: this_DefaultOptionParam_0= ruleDefaultOptionParam
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSelectParamAccess().getDefaultOptionParamParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleDefaultOptionParam_in_ruleSelectParam4829);
                    this_DefaultOptionParam_0=ruleDefaultOptionParam();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_DefaultOptionParam_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2274:6: ( (lv_select_1_0= ruleChoiceFn ) )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2274:6: ( (lv_select_1_0= ruleChoiceFn ) )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2275:1: (lv_select_1_0= ruleChoiceFn )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2275:1: (lv_select_1_0= ruleChoiceFn )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2276:3: lv_select_1_0= ruleChoiceFn
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getSelectParamAccess().getSelectChoiceFnParserRuleCall_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleChoiceFn_in_ruleSelectParam4855);
                    lv_select_1_0=ruleChoiceFn();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getSelectParamRule());
                      	        }
                             		set(
                             			current, 
                             			"select",
                              		lv_select_1_0, 
                              		"ChoiceFn");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSelectParam"


    // $ANTLR start "entryRuleChoiceParam"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2300:1: entryRuleChoiceParam returns [EObject current=null] : iv_ruleChoiceParam= ruleChoiceParam EOF ;
    public final EObject entryRuleChoiceParam() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleChoiceParam = null;


        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2301:2: (iv_ruleChoiceParam= ruleChoiceParam EOF )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2302:2: iv_ruleChoiceParam= ruleChoiceParam EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getChoiceParamRule()); 
            }
            pushFollow(FOLLOW_ruleChoiceParam_in_entryRuleChoiceParam4891);
            iv_ruleChoiceParam=ruleChoiceParam();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleChoiceParam; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleChoiceParam4901); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleChoiceParam"


    // $ANTLR start "ruleChoiceParam"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2309:1: ruleChoiceParam returns [EObject current=null] : (this_DefaultOptionParam_0= ruleDefaultOptionParam | ( (lv_choice_1_0= ruleChoiceFn ) ) ) ;
    public final EObject ruleChoiceParam() throws RecognitionException {
        EObject current = null;

        EObject this_DefaultOptionParam_0 = null;

        EObject lv_choice_1_0 = null;


         enterRule(); 
            
        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2312:28: ( (this_DefaultOptionParam_0= ruleDefaultOptionParam | ( (lv_choice_1_0= ruleChoiceFn ) ) ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2313:1: (this_DefaultOptionParam_0= ruleDefaultOptionParam | ( (lv_choice_1_0= ruleChoiceFn ) ) )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2313:1: (this_DefaultOptionParam_0= ruleDefaultOptionParam | ( (lv_choice_1_0= ruleChoiceFn ) ) )
            int alt76=2;
            int LA76_0 = input.LA(1);

            if ( (LA76_0==14||LA76_0==17||LA76_0==32||LA76_0==49) ) {
                alt76=1;
            }
            else if ( (LA76_0==RULE_ID) ) {
                alt76=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 76, 0, input);

                throw nvae;
            }
            switch (alt76) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2314:2: this_DefaultOptionParam_0= ruleDefaultOptionParam
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getChoiceParamAccess().getDefaultOptionParamParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleDefaultOptionParam_in_ruleChoiceParam4951);
                    this_DefaultOptionParam_0=ruleDefaultOptionParam();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_DefaultOptionParam_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2326:6: ( (lv_choice_1_0= ruleChoiceFn ) )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2326:6: ( (lv_choice_1_0= ruleChoiceFn ) )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2327:1: (lv_choice_1_0= ruleChoiceFn )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2327:1: (lv_choice_1_0= ruleChoiceFn )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2328:3: lv_choice_1_0= ruleChoiceFn
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getChoiceParamAccess().getChoiceChoiceFnParserRuleCall_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleChoiceFn_in_ruleChoiceParam4977);
                    lv_choice_1_0=ruleChoiceFn();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getChoiceParamRule());
                      	        }
                             		set(
                             			current, 
                             			"choice",
                              		lv_choice_1_0, 
                              		"ChoiceFn");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleChoiceParam"


    // $ANTLR start "entryRuleCustomParamFn"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2352:1: entryRuleCustomParamFn returns [EObject current=null] : iv_ruleCustomParamFn= ruleCustomParamFn EOF ;
    public final EObject entryRuleCustomParamFn() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCustomParamFn = null;


        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2353:2: (iv_ruleCustomParamFn= ruleCustomParamFn EOF )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2354:2: iv_ruleCustomParamFn= ruleCustomParamFn EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getCustomParamFnRule()); 
            }
            pushFollow(FOLLOW_ruleCustomParamFn_in_entryRuleCustomParamFn5013);
            iv_ruleCustomParamFn=ruleCustomParamFn();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleCustomParamFn; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleCustomParamFn5023); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCustomParamFn"


    // $ANTLR start "ruleCustomParamFn"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2361:1: ruleCustomParamFn returns [EObject current=null] : ( ( (lv_id_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_value_2_0= RULE_STRING ) ) ) ;
    public final EObject ruleCustomParamFn() throws RecognitionException {
        EObject current = null;

        Token lv_id_0_0=null;
        Token otherlv_1=null;
        Token lv_value_2_0=null;

         enterRule(); 
            
        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2364:28: ( ( ( (lv_id_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_value_2_0= RULE_STRING ) ) ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2365:1: ( ( (lv_id_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_value_2_0= RULE_STRING ) ) )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2365:1: ( ( (lv_id_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_value_2_0= RULE_STRING ) ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2365:2: ( (lv_id_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_value_2_0= RULE_STRING ) )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2365:2: ( (lv_id_0_0= RULE_ID ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2366:1: (lv_id_0_0= RULE_ID )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2366:1: (lv_id_0_0= RULE_ID )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2367:3: lv_id_0_0= RULE_ID
            {
            lv_id_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleCustomParamFn5065); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_id_0_0, grammarAccess.getCustomParamFnAccess().getIdIDTerminalRuleCall_0_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getCustomParamFnRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"id",
                      		lv_id_0_0, 
                      		"ID");
              	    
            }

            }


            }

            otherlv_1=(Token)match(input,50,FOLLOW_50_in_ruleCustomParamFn5082); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getCustomParamFnAccess().getEqualsSignKeyword_1());
                  
            }
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2387:1: ( (lv_value_2_0= RULE_STRING ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2388:1: (lv_value_2_0= RULE_STRING )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2388:1: (lv_value_2_0= RULE_STRING )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2389:3: lv_value_2_0= RULE_STRING
            {
            lv_value_2_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleCustomParamFn5099); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_value_2_0, grammarAccess.getCustomParamFnAccess().getValueSTRINGTerminalRuleCall_2_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getCustomParamFnRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"value",
                      		lv_value_2_0, 
                      		"STRING");
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCustomParamFn"


    // $ANTLR start "entryRuleCustomParam"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2413:1: entryRuleCustomParam returns [EObject current=null] : iv_ruleCustomParam= ruleCustomParam EOF ;
    public final EObject entryRuleCustomParam() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCustomParam = null;


        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2414:2: (iv_ruleCustomParam= ruleCustomParam EOF )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2415:2: iv_ruleCustomParam= ruleCustomParam EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getCustomParamRule()); 
            }
            pushFollow(FOLLOW_ruleCustomParam_in_entryRuleCustomParam5140);
            iv_ruleCustomParam=ruleCustomParam();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleCustomParam; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleCustomParam5150); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCustomParam"


    // $ANTLR start "ruleCustomParam"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2422:1: ruleCustomParam returns [EObject current=null] : (this_DefaultOptionParam_0= ruleDefaultOptionParam | (otherlv_1= 'className' ( (lv_className_2_0= RULE_STRING ) ) ) | ( (lv_customSettings_3_0= ruleCustomParamFn ) ) ) ;
    public final EObject ruleCustomParam() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token lv_className_2_0=null;
        EObject this_DefaultOptionParam_0 = null;

        EObject lv_customSettings_3_0 = null;


         enterRule(); 
            
        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2425:28: ( (this_DefaultOptionParam_0= ruleDefaultOptionParam | (otherlv_1= 'className' ( (lv_className_2_0= RULE_STRING ) ) ) | ( (lv_customSettings_3_0= ruleCustomParamFn ) ) ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2426:1: (this_DefaultOptionParam_0= ruleDefaultOptionParam | (otherlv_1= 'className' ( (lv_className_2_0= RULE_STRING ) ) ) | ( (lv_customSettings_3_0= ruleCustomParamFn ) ) )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2426:1: (this_DefaultOptionParam_0= ruleDefaultOptionParam | (otherlv_1= 'className' ( (lv_className_2_0= RULE_STRING ) ) ) | ( (lv_customSettings_3_0= ruleCustomParamFn ) ) )
            int alt77=3;
            switch ( input.LA(1) ) {
            case 14:
            case 17:
            case 32:
            case 49:
                {
                alt77=1;
                }
                break;
            case 54:
                {
                alt77=2;
                }
                break;
            case RULE_ID:
                {
                alt77=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 77, 0, input);

                throw nvae;
            }

            switch (alt77) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2427:2: this_DefaultOptionParam_0= ruleDefaultOptionParam
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getCustomParamAccess().getDefaultOptionParamParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleDefaultOptionParam_in_ruleCustomParam5200);
                    this_DefaultOptionParam_0=ruleDefaultOptionParam();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_DefaultOptionParam_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2439:6: (otherlv_1= 'className' ( (lv_className_2_0= RULE_STRING ) ) )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2439:6: (otherlv_1= 'className' ( (lv_className_2_0= RULE_STRING ) ) )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2439:8: otherlv_1= 'className' ( (lv_className_2_0= RULE_STRING ) )
                    {
                    otherlv_1=(Token)match(input,54,FOLLOW_54_in_ruleCustomParam5218); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getCustomParamAccess().getClassNameKeyword_1_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2443:1: ( (lv_className_2_0= RULE_STRING ) )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2444:1: (lv_className_2_0= RULE_STRING )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2444:1: (lv_className_2_0= RULE_STRING )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2445:3: lv_className_2_0= RULE_STRING
                    {
                    lv_className_2_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleCustomParam5235); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_className_2_0, grammarAccess.getCustomParamAccess().getClassNameSTRINGTerminalRuleCall_1_1_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getCustomParamRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"className",
                              		lv_className_2_0, 
                              		"STRING");
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 3 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2462:6: ( (lv_customSettings_3_0= ruleCustomParamFn ) )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2462:6: ( (lv_customSettings_3_0= ruleCustomParamFn ) )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2463:1: (lv_customSettings_3_0= ruleCustomParamFn )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2463:1: (lv_customSettings_3_0= ruleCustomParamFn )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2464:3: lv_customSettings_3_0= ruleCustomParamFn
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getCustomParamAccess().getCustomSettingsCustomParamFnParserRuleCall_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleCustomParamFn_in_ruleCustomParam5268);
                    lv_customSettings_3_0=ruleCustomParamFn();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getCustomParamRule());
                      	        }
                             		add(
                             			current, 
                             			"customSettings",
                              		lv_customSettings_3_0, 
                              		"CustomParamFn");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCustomParam"


    // $ANTLR start "entryRuleChoiceFn"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2490:1: entryRuleChoiceFn returns [EObject current=null] : iv_ruleChoiceFn= ruleChoiceFn EOF ;
    public final EObject entryRuleChoiceFn() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleChoiceFn = null;


        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2491:2: (iv_ruleChoiceFn= ruleChoiceFn EOF )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2492:2: iv_ruleChoiceFn= ruleChoiceFn EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getChoiceFnRule()); 
            }
            pushFollow(FOLLOW_ruleChoiceFn_in_entryRuleChoiceFn5306);
            iv_ruleChoiceFn=ruleChoiceFn();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleChoiceFn; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleChoiceFn5316); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleChoiceFn"


    // $ANTLR start "ruleChoiceFn"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2499:1: ruleChoiceFn returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= '=' )? ( (lv_title_2_0= RULE_STRING ) ) )? ) ;
    public final EObject ruleChoiceFn() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token lv_title_2_0=null;

         enterRule(); 
            
        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2502:28: ( ( ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= '=' )? ( (lv_title_2_0= RULE_STRING ) ) )? ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2503:1: ( ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= '=' )? ( (lv_title_2_0= RULE_STRING ) ) )? )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2503:1: ( ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= '=' )? ( (lv_title_2_0= RULE_STRING ) ) )? )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2503:2: ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= '=' )? ( (lv_title_2_0= RULE_STRING ) ) )?
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2503:2: ( (lv_name_0_0= RULE_ID ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2504:1: (lv_name_0_0= RULE_ID )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2504:1: (lv_name_0_0= RULE_ID )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2505:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleChoiceFn5358); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_0_0, grammarAccess.getChoiceFnAccess().getNameIDTerminalRuleCall_0_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getChoiceFnRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_0_0, 
                      		"ID");
              	    
            }

            }


            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2521:2: ( (otherlv_1= '=' )? ( (lv_title_2_0= RULE_STRING ) ) )?
            int alt79=2;
            int LA79_0 = input.LA(1);

            if ( (LA79_0==RULE_STRING||LA79_0==50) ) {
                alt79=1;
            }
            switch (alt79) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2521:3: (otherlv_1= '=' )? ( (lv_title_2_0= RULE_STRING ) )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2521:3: (otherlv_1= '=' )?
                    int alt78=2;
                    int LA78_0 = input.LA(1);

                    if ( (LA78_0==50) ) {
                        alt78=1;
                    }
                    switch (alt78) {
                        case 1 :
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2521:5: otherlv_1= '='
                            {
                            otherlv_1=(Token)match(input,50,FOLLOW_50_in_ruleChoiceFn5377); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_1, grammarAccess.getChoiceFnAccess().getEqualsSignKeyword_1_0());
                                  
                            }

                            }
                            break;

                    }

                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2525:3: ( (lv_title_2_0= RULE_STRING ) )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2526:1: (lv_title_2_0= RULE_STRING )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2526:1: (lv_title_2_0= RULE_STRING )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2527:3: lv_title_2_0= RULE_STRING
                    {
                    lv_title_2_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleChoiceFn5396); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_title_2_0, grammarAccess.getChoiceFnAccess().getTitleSTRINGTerminalRuleCall_1_1_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getChoiceFnRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"title",
                              		lv_title_2_0, 
                              		"STRING");
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleChoiceFn"


    // $ANTLR start "entryRuleOption"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2551:1: entryRuleOption returns [EObject current=null] : iv_ruleOption= ruleOption EOF ;
    public final EObject entryRuleOption() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleOption = null;


        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2552:2: (iv_ruleOption= ruleOption EOF )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2553:2: iv_ruleOption= ruleOption EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOptionRule()); 
            }
            pushFollow(FOLLOW_ruleOption_in_entryRuleOption5439);
            iv_ruleOption=ruleOption();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOption; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOption5449); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOption"


    // $ANTLR start "ruleOption"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2560:1: ruleOption returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_type_1_0= ruleOptionType ) ) ) ;
    public final EObject ruleOption() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        EObject lv_type_1_0 = null;


         enterRule(); 
            
        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2563:28: ( ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_type_1_0= ruleOptionType ) ) ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2564:1: ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_type_1_0= ruleOptionType ) ) )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2564:1: ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_type_1_0= ruleOptionType ) ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2564:2: ( (lv_name_0_0= RULE_ID ) ) ( (lv_type_1_0= ruleOptionType ) )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2564:2: ( (lv_name_0_0= RULE_ID ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2565:1: (lv_name_0_0= RULE_ID )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2565:1: (lv_name_0_0= RULE_ID )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2566:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleOption5491); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_0_0, grammarAccess.getOptionAccess().getNameIDTerminalRuleCall_0_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getOptionRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_0_0, 
                      		"ID");
              	    
            }

            }


            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2582:2: ( (lv_type_1_0= ruleOptionType ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2583:1: (lv_type_1_0= ruleOptionType )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2583:1: (lv_type_1_0= ruleOptionType )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2584:3: lv_type_1_0= ruleOptionType
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getOptionAccess().getTypeOptionTypeParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleOptionType_in_ruleOption5517);
            lv_type_1_0=ruleOptionType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getOptionRule());
              	        }
                     		set(
                     			current, 
                     			"type",
                      		lv_type_1_0, 
                      		"OptionType");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOption"


    // $ANTLR start "entryRuleFunctionType"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2608:1: entryRuleFunctionType returns [EObject current=null] : iv_ruleFunctionType= ruleFunctionType EOF ;
    public final EObject entryRuleFunctionType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFunctionType = null;


        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2609:2: (iv_ruleFunctionType= ruleFunctionType EOF )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2610:2: iv_ruleFunctionType= ruleFunctionType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getFunctionTypeRule()); 
            }
            pushFollow(FOLLOW_ruleFunctionType_in_entryRuleFunctionType5553);
            iv_ruleFunctionType=ruleFunctionType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleFunctionType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionType5563); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFunctionType"


    // $ANTLR start "ruleFunctionType"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2617:1: ruleFunctionType returns [EObject current=null] : ( ( () ( ( (lv_type_1_0= 'action' ) ) | ( (lv_type_2_0= 'filter' ) ) | ( (lv_type_3_0= 'activation' ) ) | ( (lv_type_4_0= 'deactivation' ) ) | ( ( (lv_type_5_0= 'uninstall' ) ) otherlv_6= '(' ( (lv_tag_7_0= RULE_STRING ) ) (otherlv_8= ',' ( (lv_priority_9_0= RULE_INT ) ) (otherlv_10= ',' ( (lv_acceptedArgs_11_0= RULE_INT ) ) )? )? otherlv_12= ')' ) ) ) | ( ( (lv_type_13_0= 'shortcode' ) ) (otherlv_14= '(' ( (lv_attr_15_0= RULE_ID ) ) (otherlv_16= ',' ( (lv_attr_17_0= RULE_ID ) ) )* otherlv_18= ')' )? ) ) ;
    public final EObject ruleFunctionType() throws RecognitionException {
        EObject current = null;

        Token lv_type_1_0=null;
        Token lv_type_2_0=null;
        Token lv_type_3_0=null;
        Token lv_type_4_0=null;
        Token lv_type_5_0=null;
        Token otherlv_6=null;
        Token lv_tag_7_0=null;
        Token otherlv_8=null;
        Token lv_priority_9_0=null;
        Token otherlv_10=null;
        Token lv_acceptedArgs_11_0=null;
        Token otherlv_12=null;
        Token lv_type_13_0=null;
        Token otherlv_14=null;
        Token lv_attr_15_0=null;
        Token otherlv_16=null;
        Token lv_attr_17_0=null;
        Token otherlv_18=null;

         enterRule(); 
            
        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2620:28: ( ( ( () ( ( (lv_type_1_0= 'action' ) ) | ( (lv_type_2_0= 'filter' ) ) | ( (lv_type_3_0= 'activation' ) ) | ( (lv_type_4_0= 'deactivation' ) ) | ( ( (lv_type_5_0= 'uninstall' ) ) otherlv_6= '(' ( (lv_tag_7_0= RULE_STRING ) ) (otherlv_8= ',' ( (lv_priority_9_0= RULE_INT ) ) (otherlv_10= ',' ( (lv_acceptedArgs_11_0= RULE_INT ) ) )? )? otherlv_12= ')' ) ) ) | ( ( (lv_type_13_0= 'shortcode' ) ) (otherlv_14= '(' ( (lv_attr_15_0= RULE_ID ) ) (otherlv_16= ',' ( (lv_attr_17_0= RULE_ID ) ) )* otherlv_18= ')' )? ) ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2621:1: ( ( () ( ( (lv_type_1_0= 'action' ) ) | ( (lv_type_2_0= 'filter' ) ) | ( (lv_type_3_0= 'activation' ) ) | ( (lv_type_4_0= 'deactivation' ) ) | ( ( (lv_type_5_0= 'uninstall' ) ) otherlv_6= '(' ( (lv_tag_7_0= RULE_STRING ) ) (otherlv_8= ',' ( (lv_priority_9_0= RULE_INT ) ) (otherlv_10= ',' ( (lv_acceptedArgs_11_0= RULE_INT ) ) )? )? otherlv_12= ')' ) ) ) | ( ( (lv_type_13_0= 'shortcode' ) ) (otherlv_14= '(' ( (lv_attr_15_0= RULE_ID ) ) (otherlv_16= ',' ( (lv_attr_17_0= RULE_ID ) ) )* otherlv_18= ')' )? ) )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2621:1: ( ( () ( ( (lv_type_1_0= 'action' ) ) | ( (lv_type_2_0= 'filter' ) ) | ( (lv_type_3_0= 'activation' ) ) | ( (lv_type_4_0= 'deactivation' ) ) | ( ( (lv_type_5_0= 'uninstall' ) ) otherlv_6= '(' ( (lv_tag_7_0= RULE_STRING ) ) (otherlv_8= ',' ( (lv_priority_9_0= RULE_INT ) ) (otherlv_10= ',' ( (lv_acceptedArgs_11_0= RULE_INT ) ) )? )? otherlv_12= ')' ) ) ) | ( ( (lv_type_13_0= 'shortcode' ) ) (otherlv_14= '(' ( (lv_attr_15_0= RULE_ID ) ) (otherlv_16= ',' ( (lv_attr_17_0= RULE_ID ) ) )* otherlv_18= ')' )? ) )
            int alt85=2;
            int LA85_0 = input.LA(1);

            if ( ((LA85_0>=55 && LA85_0<=59)) ) {
                alt85=1;
            }
            else if ( (LA85_0==60) ) {
                alt85=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 85, 0, input);

                throw nvae;
            }
            switch (alt85) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2621:2: ( () ( ( (lv_type_1_0= 'action' ) ) | ( (lv_type_2_0= 'filter' ) ) | ( (lv_type_3_0= 'activation' ) ) | ( (lv_type_4_0= 'deactivation' ) ) | ( ( (lv_type_5_0= 'uninstall' ) ) otherlv_6= '(' ( (lv_tag_7_0= RULE_STRING ) ) (otherlv_8= ',' ( (lv_priority_9_0= RULE_INT ) ) (otherlv_10= ',' ( (lv_acceptedArgs_11_0= RULE_INT ) ) )? )? otherlv_12= ')' ) ) )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2621:2: ( () ( ( (lv_type_1_0= 'action' ) ) | ( (lv_type_2_0= 'filter' ) ) | ( (lv_type_3_0= 'activation' ) ) | ( (lv_type_4_0= 'deactivation' ) ) | ( ( (lv_type_5_0= 'uninstall' ) ) otherlv_6= '(' ( (lv_tag_7_0= RULE_STRING ) ) (otherlv_8= ',' ( (lv_priority_9_0= RULE_INT ) ) (otherlv_10= ',' ( (lv_acceptedArgs_11_0= RULE_INT ) ) )? )? otherlv_12= ')' ) ) )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2621:3: () ( ( (lv_type_1_0= 'action' ) ) | ( (lv_type_2_0= 'filter' ) ) | ( (lv_type_3_0= 'activation' ) ) | ( (lv_type_4_0= 'deactivation' ) ) | ( ( (lv_type_5_0= 'uninstall' ) ) otherlv_6= '(' ( (lv_tag_7_0= RULE_STRING ) ) (otherlv_8= ',' ( (lv_priority_9_0= RULE_INT ) ) (otherlv_10= ',' ( (lv_acceptedArgs_11_0= RULE_INT ) ) )? )? otherlv_12= ')' ) )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2621:3: ()
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2622:2: 
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElement(
                                  grammarAccess.getFunctionTypeAccess().getFunctionTypeAction_0_0(),
                                  current);
                          
                    }

                    }

                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2630:2: ( ( (lv_type_1_0= 'action' ) ) | ( (lv_type_2_0= 'filter' ) ) | ( (lv_type_3_0= 'activation' ) ) | ( (lv_type_4_0= 'deactivation' ) ) | ( ( (lv_type_5_0= 'uninstall' ) ) otherlv_6= '(' ( (lv_tag_7_0= RULE_STRING ) ) (otherlv_8= ',' ( (lv_priority_9_0= RULE_INT ) ) (otherlv_10= ',' ( (lv_acceptedArgs_11_0= RULE_INT ) ) )? )? otherlv_12= ')' ) )
                    int alt82=5;
                    switch ( input.LA(1) ) {
                    case 55:
                        {
                        alt82=1;
                        }
                        break;
                    case 56:
                        {
                        alt82=2;
                        }
                        break;
                    case 57:
                        {
                        alt82=3;
                        }
                        break;
                    case 58:
                        {
                        alt82=4;
                        }
                        break;
                    case 59:
                        {
                        alt82=5;
                        }
                        break;
                    default:
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 82, 0, input);

                        throw nvae;
                    }

                    switch (alt82) {
                        case 1 :
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2630:3: ( (lv_type_1_0= 'action' ) )
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2630:3: ( (lv_type_1_0= 'action' ) )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2631:1: (lv_type_1_0= 'action' )
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2631:1: (lv_type_1_0= 'action' )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2632:3: lv_type_1_0= 'action'
                            {
                            lv_type_1_0=(Token)match(input,55,FOLLOW_55_in_ruleFunctionType5620); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_type_1_0, grammarAccess.getFunctionTypeAccess().getTypeActionKeyword_0_1_0_0());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getFunctionTypeRule());
                              	        }
                                     		setWithLastConsumed(current, "type", lv_type_1_0, "action");
                              	    
                            }

                            }


                            }


                            }
                            break;
                        case 2 :
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2646:6: ( (lv_type_2_0= 'filter' ) )
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2646:6: ( (lv_type_2_0= 'filter' ) )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2647:1: (lv_type_2_0= 'filter' )
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2647:1: (lv_type_2_0= 'filter' )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2648:3: lv_type_2_0= 'filter'
                            {
                            lv_type_2_0=(Token)match(input,56,FOLLOW_56_in_ruleFunctionType5657); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_type_2_0, grammarAccess.getFunctionTypeAccess().getTypeFilterKeyword_0_1_1_0());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getFunctionTypeRule());
                              	        }
                                     		setWithLastConsumed(current, "type", lv_type_2_0, "filter");
                              	    
                            }

                            }


                            }


                            }
                            break;
                        case 3 :
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2662:6: ( (lv_type_3_0= 'activation' ) )
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2662:6: ( (lv_type_3_0= 'activation' ) )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2663:1: (lv_type_3_0= 'activation' )
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2663:1: (lv_type_3_0= 'activation' )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2664:3: lv_type_3_0= 'activation'
                            {
                            lv_type_3_0=(Token)match(input,57,FOLLOW_57_in_ruleFunctionType5694); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_type_3_0, grammarAccess.getFunctionTypeAccess().getTypeActivationKeyword_0_1_2_0());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getFunctionTypeRule());
                              	        }
                                     		setWithLastConsumed(current, "type", lv_type_3_0, "activation");
                              	    
                            }

                            }


                            }


                            }
                            break;
                        case 4 :
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2678:6: ( (lv_type_4_0= 'deactivation' ) )
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2678:6: ( (lv_type_4_0= 'deactivation' ) )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2679:1: (lv_type_4_0= 'deactivation' )
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2679:1: (lv_type_4_0= 'deactivation' )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2680:3: lv_type_4_0= 'deactivation'
                            {
                            lv_type_4_0=(Token)match(input,58,FOLLOW_58_in_ruleFunctionType5731); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_type_4_0, grammarAccess.getFunctionTypeAccess().getTypeDeactivationKeyword_0_1_3_0());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getFunctionTypeRule());
                              	        }
                                     		setWithLastConsumed(current, "type", lv_type_4_0, "deactivation");
                              	    
                            }

                            }


                            }


                            }
                            break;
                        case 5 :
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2694:6: ( ( (lv_type_5_0= 'uninstall' ) ) otherlv_6= '(' ( (lv_tag_7_0= RULE_STRING ) ) (otherlv_8= ',' ( (lv_priority_9_0= RULE_INT ) ) (otherlv_10= ',' ( (lv_acceptedArgs_11_0= RULE_INT ) ) )? )? otherlv_12= ')' )
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2694:6: ( ( (lv_type_5_0= 'uninstall' ) ) otherlv_6= '(' ( (lv_tag_7_0= RULE_STRING ) ) (otherlv_8= ',' ( (lv_priority_9_0= RULE_INT ) ) (otherlv_10= ',' ( (lv_acceptedArgs_11_0= RULE_INT ) ) )? )? otherlv_12= ')' )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2694:7: ( (lv_type_5_0= 'uninstall' ) ) otherlv_6= '(' ( (lv_tag_7_0= RULE_STRING ) ) (otherlv_8= ',' ( (lv_priority_9_0= RULE_INT ) ) (otherlv_10= ',' ( (lv_acceptedArgs_11_0= RULE_INT ) ) )? )? otherlv_12= ')'
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2694:7: ( (lv_type_5_0= 'uninstall' ) )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2695:1: (lv_type_5_0= 'uninstall' )
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2695:1: (lv_type_5_0= 'uninstall' )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2696:3: lv_type_5_0= 'uninstall'
                            {
                            lv_type_5_0=(Token)match(input,59,FOLLOW_59_in_ruleFunctionType5769); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_type_5_0, grammarAccess.getFunctionTypeAccess().getTypeUninstallKeyword_0_1_4_0_0());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getFunctionTypeRule());
                              	        }
                                     		setWithLastConsumed(current, "type", lv_type_5_0, "uninstall");
                              	    
                            }

                            }


                            }

                            otherlv_6=(Token)match(input,46,FOLLOW_46_in_ruleFunctionType5794); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_6, grammarAccess.getFunctionTypeAccess().getLeftParenthesisKeyword_0_1_4_1());
                                  
                            }
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2713:1: ( (lv_tag_7_0= RULE_STRING ) )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2714:1: (lv_tag_7_0= RULE_STRING )
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2714:1: (lv_tag_7_0= RULE_STRING )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2715:3: lv_tag_7_0= RULE_STRING
                            {
                            lv_tag_7_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleFunctionType5811); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              			newLeafNode(lv_tag_7_0, grammarAccess.getFunctionTypeAccess().getTagSTRINGTerminalRuleCall_0_1_4_2_0()); 
                              		
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getFunctionTypeRule());
                              	        }
                                     		setWithLastConsumed(
                                     			current, 
                                     			"tag",
                                      		lv_tag_7_0, 
                                      		"STRING");
                              	    
                            }

                            }


                            }

                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2731:2: (otherlv_8= ',' ( (lv_priority_9_0= RULE_INT ) ) (otherlv_10= ',' ( (lv_acceptedArgs_11_0= RULE_INT ) ) )? )?
                            int alt81=2;
                            int LA81_0 = input.LA(1);

                            if ( (LA81_0==47) ) {
                                alt81=1;
                            }
                            switch (alt81) {
                                case 1 :
                                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2731:4: otherlv_8= ',' ( (lv_priority_9_0= RULE_INT ) ) (otherlv_10= ',' ( (lv_acceptedArgs_11_0= RULE_INT ) ) )?
                                    {
                                    otherlv_8=(Token)match(input,47,FOLLOW_47_in_ruleFunctionType5829); if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                          	newLeafNode(otherlv_8, grammarAccess.getFunctionTypeAccess().getCommaKeyword_0_1_4_3_0());
                                          
                                    }
                                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2735:1: ( (lv_priority_9_0= RULE_INT ) )
                                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2736:1: (lv_priority_9_0= RULE_INT )
                                    {
                                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2736:1: (lv_priority_9_0= RULE_INT )
                                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2737:3: lv_priority_9_0= RULE_INT
                                    {
                                    lv_priority_9_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleFunctionType5846); if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                      			newLeafNode(lv_priority_9_0, grammarAccess.getFunctionTypeAccess().getPriorityINTTerminalRuleCall_0_1_4_3_1_0()); 
                                      		
                                    }
                                    if ( state.backtracking==0 ) {

                                      	        if (current==null) {
                                      	            current = createModelElement(grammarAccess.getFunctionTypeRule());
                                      	        }
                                             		setWithLastConsumed(
                                             			current, 
                                             			"priority",
                                              		lv_priority_9_0, 
                                              		"INT");
                                      	    
                                    }

                                    }


                                    }

                                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2753:2: (otherlv_10= ',' ( (lv_acceptedArgs_11_0= RULE_INT ) ) )?
                                    int alt80=2;
                                    int LA80_0 = input.LA(1);

                                    if ( (LA80_0==47) ) {
                                        alt80=1;
                                    }
                                    switch (alt80) {
                                        case 1 :
                                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2753:4: otherlv_10= ',' ( (lv_acceptedArgs_11_0= RULE_INT ) )
                                            {
                                            otherlv_10=(Token)match(input,47,FOLLOW_47_in_ruleFunctionType5864); if (state.failed) return current;
                                            if ( state.backtracking==0 ) {

                                                  	newLeafNode(otherlv_10, grammarAccess.getFunctionTypeAccess().getCommaKeyword_0_1_4_3_2_0());
                                                  
                                            }
                                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2757:1: ( (lv_acceptedArgs_11_0= RULE_INT ) )
                                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2758:1: (lv_acceptedArgs_11_0= RULE_INT )
                                            {
                                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2758:1: (lv_acceptedArgs_11_0= RULE_INT )
                                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2759:3: lv_acceptedArgs_11_0= RULE_INT
                                            {
                                            lv_acceptedArgs_11_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleFunctionType5881); if (state.failed) return current;
                                            if ( state.backtracking==0 ) {

                                              			newLeafNode(lv_acceptedArgs_11_0, grammarAccess.getFunctionTypeAccess().getAcceptedArgsINTTerminalRuleCall_0_1_4_3_2_1_0()); 
                                              		
                                            }
                                            if ( state.backtracking==0 ) {

                                              	        if (current==null) {
                                              	            current = createModelElement(grammarAccess.getFunctionTypeRule());
                                              	        }
                                                     		setWithLastConsumed(
                                                     			current, 
                                                     			"acceptedArgs",
                                                      		lv_acceptedArgs_11_0, 
                                                      		"INT");
                                              	    
                                            }

                                            }


                                            }


                                            }
                                            break;

                                    }


                                    }
                                    break;

                            }

                            otherlv_12=(Token)match(input,48,FOLLOW_48_in_ruleFunctionType5902); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_12, grammarAccess.getFunctionTypeAccess().getRightParenthesisKeyword_0_1_4_4());
                                  
                            }

                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2780:6: ( ( (lv_type_13_0= 'shortcode' ) ) (otherlv_14= '(' ( (lv_attr_15_0= RULE_ID ) ) (otherlv_16= ',' ( (lv_attr_17_0= RULE_ID ) ) )* otherlv_18= ')' )? )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2780:6: ( ( (lv_type_13_0= 'shortcode' ) ) (otherlv_14= '(' ( (lv_attr_15_0= RULE_ID ) ) (otherlv_16= ',' ( (lv_attr_17_0= RULE_ID ) ) )* otherlv_18= ')' )? )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2780:7: ( (lv_type_13_0= 'shortcode' ) ) (otherlv_14= '(' ( (lv_attr_15_0= RULE_ID ) ) (otherlv_16= ',' ( (lv_attr_17_0= RULE_ID ) ) )* otherlv_18= ')' )?
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2780:7: ( (lv_type_13_0= 'shortcode' ) )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2781:1: (lv_type_13_0= 'shortcode' )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2781:1: (lv_type_13_0= 'shortcode' )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2782:3: lv_type_13_0= 'shortcode'
                    {
                    lv_type_13_0=(Token)match(input,60,FOLLOW_60_in_ruleFunctionType5930); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_type_13_0, grammarAccess.getFunctionTypeAccess().getTypeShortcodeKeyword_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getFunctionTypeRule());
                      	        }
                             		setWithLastConsumed(current, "type", lv_type_13_0, "shortcode");
                      	    
                    }

                    }


                    }

                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2795:2: (otherlv_14= '(' ( (lv_attr_15_0= RULE_ID ) ) (otherlv_16= ',' ( (lv_attr_17_0= RULE_ID ) ) )* otherlv_18= ')' )?
                    int alt84=2;
                    int LA84_0 = input.LA(1);

                    if ( (LA84_0==46) ) {
                        alt84=1;
                    }
                    switch (alt84) {
                        case 1 :
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2795:4: otherlv_14= '(' ( (lv_attr_15_0= RULE_ID ) ) (otherlv_16= ',' ( (lv_attr_17_0= RULE_ID ) ) )* otherlv_18= ')'
                            {
                            otherlv_14=(Token)match(input,46,FOLLOW_46_in_ruleFunctionType5956); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_14, grammarAccess.getFunctionTypeAccess().getLeftParenthesisKeyword_1_1_0());
                                  
                            }
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2799:1: ( (lv_attr_15_0= RULE_ID ) )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2800:1: (lv_attr_15_0= RULE_ID )
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2800:1: (lv_attr_15_0= RULE_ID )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2801:3: lv_attr_15_0= RULE_ID
                            {
                            lv_attr_15_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleFunctionType5973); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              			newLeafNode(lv_attr_15_0, grammarAccess.getFunctionTypeAccess().getAttrIDTerminalRuleCall_1_1_1_0()); 
                              		
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getFunctionTypeRule());
                              	        }
                                     		addWithLastConsumed(
                                     			current, 
                                     			"attr",
                                      		lv_attr_15_0, 
                                      		"ID");
                              	    
                            }

                            }


                            }

                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2817:2: (otherlv_16= ',' ( (lv_attr_17_0= RULE_ID ) ) )*
                            loop83:
                            do {
                                int alt83=2;
                                int LA83_0 = input.LA(1);

                                if ( (LA83_0==47) ) {
                                    alt83=1;
                                }


                                switch (alt83) {
                            	case 1 :
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2817:4: otherlv_16= ',' ( (lv_attr_17_0= RULE_ID ) )
                            	    {
                            	    otherlv_16=(Token)match(input,47,FOLLOW_47_in_ruleFunctionType5991); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_16, grammarAccess.getFunctionTypeAccess().getCommaKeyword_1_1_2_0());
                            	          
                            	    }
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2821:1: ( (lv_attr_17_0= RULE_ID ) )
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2822:1: (lv_attr_17_0= RULE_ID )
                            	    {
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2822:1: (lv_attr_17_0= RULE_ID )
                            	    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2823:3: lv_attr_17_0= RULE_ID
                            	    {
                            	    lv_attr_17_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleFunctionType6008); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      			newLeafNode(lv_attr_17_0, grammarAccess.getFunctionTypeAccess().getAttrIDTerminalRuleCall_1_1_2_1_0()); 
                            	      		
                            	    }
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElement(grammarAccess.getFunctionTypeRule());
                            	      	        }
                            	             		addWithLastConsumed(
                            	             			current, 
                            	             			"attr",
                            	              		lv_attr_17_0, 
                            	              		"ID");
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop83;
                                }
                            } while (true);

                            otherlv_18=(Token)match(input,48,FOLLOW_48_in_ruleFunctionType6027); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_18, grammarAccess.getFunctionTypeAccess().getRightParenthesisKeyword_1_1_3());
                                  
                            }

                            }
                            break;

                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFunctionType"


    // $ANTLR start "entryRuleFunction"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2851:1: entryRuleFunction returns [EObject current=null] : iv_ruleFunction= ruleFunction EOF ;
    public final EObject entryRuleFunction() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFunction = null;


        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2852:2: (iv_ruleFunction= ruleFunction EOF )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2853:2: iv_ruleFunction= ruleFunction EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getFunctionRule()); 
            }
            pushFollow(FOLLOW_ruleFunction_in_entryRuleFunction6066);
            iv_ruleFunction=ruleFunction();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleFunction; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleFunction6076); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFunction"


    // $ANTLR start "ruleFunction"
    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2860:1: ruleFunction returns [EObject current=null] : (this_FunctionType_0= ruleFunctionType ( (lv_name_1_0= RULE_ID ) ) ( (lv_call_2_0= RULE_ID ) )? (otherlv_3= '{' ( (lv_body_4_0= RULE_STRING ) )? otherlv_5= '}' )? ) ;
    public final EObject ruleFunction() throws RecognitionException {
        EObject current = null;

        Token lv_name_1_0=null;
        Token lv_call_2_0=null;
        Token otherlv_3=null;
        Token lv_body_4_0=null;
        Token otherlv_5=null;
        EObject this_FunctionType_0 = null;


         enterRule(); 
            
        try {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2863:28: ( (this_FunctionType_0= ruleFunctionType ( (lv_name_1_0= RULE_ID ) ) ( (lv_call_2_0= RULE_ID ) )? (otherlv_3= '{' ( (lv_body_4_0= RULE_STRING ) )? otherlv_5= '}' )? ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2864:1: (this_FunctionType_0= ruleFunctionType ( (lv_name_1_0= RULE_ID ) ) ( (lv_call_2_0= RULE_ID ) )? (otherlv_3= '{' ( (lv_body_4_0= RULE_STRING ) )? otherlv_5= '}' )? )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2864:1: (this_FunctionType_0= ruleFunctionType ( (lv_name_1_0= RULE_ID ) ) ( (lv_call_2_0= RULE_ID ) )? (otherlv_3= '{' ( (lv_body_4_0= RULE_STRING ) )? otherlv_5= '}' )? )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2865:2: this_FunctionType_0= ruleFunctionType ( (lv_name_1_0= RULE_ID ) ) ( (lv_call_2_0= RULE_ID ) )? (otherlv_3= '{' ( (lv_body_4_0= RULE_STRING ) )? otherlv_5= '}' )?
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getFunctionAccess().getFunctionTypeParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleFunctionType_in_ruleFunction6126);
            this_FunctionType_0=ruleFunctionType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_FunctionType_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2876:1: ( (lv_name_1_0= RULE_ID ) )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2877:1: (lv_name_1_0= RULE_ID )
            {
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2877:1: (lv_name_1_0= RULE_ID )
            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2878:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleFunction6142); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_1_0, grammarAccess.getFunctionAccess().getNameIDTerminalRuleCall_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getFunctionRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"ID");
              	    
            }

            }


            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2894:2: ( (lv_call_2_0= RULE_ID ) )?
            int alt86=2;
            int LA86_0 = input.LA(1);

            if ( (LA86_0==RULE_ID) ) {
                alt86=1;
            }
            switch (alt86) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2895:1: (lv_call_2_0= RULE_ID )
                    {
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2895:1: (lv_call_2_0= RULE_ID )
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2896:3: lv_call_2_0= RULE_ID
                    {
                    lv_call_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleFunction6164); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_call_2_0, grammarAccess.getFunctionAccess().getCallIDTerminalRuleCall_2_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getFunctionRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"call",
                              		lv_call_2_0, 
                              		"ID");
                      	    
                    }

                    }


                    }
                    break;

            }

            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2912:3: (otherlv_3= '{' ( (lv_body_4_0= RULE_STRING ) )? otherlv_5= '}' )?
            int alt88=2;
            int LA88_0 = input.LA(1);

            if ( (LA88_0==28) ) {
                alt88=1;
            }
            switch (alt88) {
                case 1 :
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2912:5: otherlv_3= '{' ( (lv_body_4_0= RULE_STRING ) )? otherlv_5= '}'
                    {
                    otherlv_3=(Token)match(input,28,FOLLOW_28_in_ruleFunction6183); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getFunctionAccess().getLeftCurlyBracketKeyword_3_0());
                          
                    }
                    // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2916:1: ( (lv_body_4_0= RULE_STRING ) )?
                    int alt87=2;
                    int LA87_0 = input.LA(1);

                    if ( (LA87_0==RULE_STRING) ) {
                        alt87=1;
                    }
                    switch (alt87) {
                        case 1 :
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2917:1: (lv_body_4_0= RULE_STRING )
                            {
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2917:1: (lv_body_4_0= RULE_STRING )
                            // ../com.logicfishsoftware.plugbench/src-gen/com/logicfishsoftware/plugbench/parser/antlr/internal/InternalWPPlugBench.g:2918:3: lv_body_4_0= RULE_STRING
                            {
                            lv_body_4_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleFunction6200); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              			newLeafNode(lv_body_4_0, grammarAccess.getFunctionAccess().getBodySTRINGTerminalRuleCall_3_1_0()); 
                              		
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getFunctionRule());
                              	        }
                                     		setWithLastConsumed(
                                     			current, 
                                     			"body",
                                      		lv_body_4_0, 
                                      		"STRING");
                              	    
                            }

                            }


                            }
                            break;

                    }

                    otherlv_5=(Token)match(input,29,FOLLOW_29_in_ruleFunction6218); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getFunctionAccess().getRightCurlyBracketKeyword_3_2());
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFunction"

    // Delegated rules


 

    public static final BitSet FOLLOW_rulePlugin_in_entryRulePlugin81 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePlugin91 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_rulePlugin129 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_rulePlugin146 = new BitSet(new long[]{0x0000000000003800L});
    public static final BitSet FOLLOW_12_in_rulePlugin173 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_13_in_rulePlugin202 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_rulePlugin235 = new BitSet(new long[]{0x0000000006004000L});
    public static final BitSet FOLLOW_rulePlatform_in_rulePlugin261 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_rulePlugin274 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_rulePlugin291 = new BitSet(new long[]{0x1F800000C9FF8002L});
    public static final BitSet FOLLOW_15_in_rulePlugin309 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_rulePlugin326 = new BitSet(new long[]{0x1F800000C9FF0002L});
    public static final BitSet FOLLOW_16_in_rulePlugin346 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_rulePlugin363 = new BitSet(new long[]{0x1F800000C9FE0002L});
    public static final BitSet FOLLOW_17_in_rulePlugin383 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_rulePlugin400 = new BitSet(new long[]{0x1F800000C9FC0002L});
    public static final BitSet FOLLOW_18_in_rulePlugin420 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_rulePlugin437 = new BitSet(new long[]{0x1F800000C9F80002L});
    public static final BitSet FOLLOW_19_in_rulePlugin457 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_rulePlugin474 = new BitSet(new long[]{0x1F800000C9F00002L});
    public static final BitSet FOLLOW_20_in_rulePlugin494 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_rulePlugin511 = new BitSet(new long[]{0x1F800000C9E00012L});
    public static final BitSet FOLLOW_21_in_rulePlugin532 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_rulePlugin549 = new BitSet(new long[]{0x1F800000C9C00012L});
    public static final BitSet FOLLOW_22_in_rulePlugin570 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_rulePlugin587 = new BitSet(new long[]{0x1F800000C9800012L});
    public static final BitSet FOLLOW_23_in_rulePlugin608 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_rulePlugin625 = new BitSet(new long[]{0x1F800000C9000012L});
    public static final BitSet FOLLOW_24_in_rulePlugin646 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_rulePlugin663 = new BitSet(new long[]{0x1F800000C8000012L});
    public static final BitSet FOLLOW_ruleOptions_in_rulePlugin692 = new BitSet(new long[]{0x1F80000088000002L});
    public static final BitSet FOLLOW_ruleOptionsPage_in_rulePlugin714 = new BitSet(new long[]{0x1F80000088000002L});
    public static final BitSet FOLLOW_ruleAdminPage_in_rulePlugin736 = new BitSet(new long[]{0x1F80000008000002L});
    public static final BitSet FOLLOW_ruleFunction_in_rulePlugin758 = new BitSet(new long[]{0x1F80000000000002L});
    public static final BitSet FOLLOW_rulePlatform_in_entryRulePlatform796 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePlatform807 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_25_in_rulePlatform845 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_26_in_rulePlatform864 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAdminPage_in_entryRuleAdminPage904 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAdminPage914 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_27_in_ruleAdminPage951 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAdminPage968 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruleAdminPage985 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleAdminPage997 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleAdminPage1014 = new BitSet(new long[]{0x0000000020020000L});
    public static final BitSet FOLLOW_17_in_ruleAdminPage1032 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleAdminPage1049 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleAdminPage1068 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOptions_in_entryRuleOptions1104 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOptions1114 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_30_in_ruleOptions1163 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruleOptions1175 = new BitSet(new long[]{0x0000000020000020L});
    public static final BitSet FOLLOW_ruleOption_in_ruleOptions1196 = new BitSet(new long[]{0x0000000020000020L});
    public static final BitSet FOLLOW_29_in_ruleOptions1209 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOptionsPage_in_entryRuleOptionsPage1245 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOptionsPage1255 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_31_in_ruleOptionsPage1292 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleOptionsPage1309 = new BitSet(new long[]{0x0000000110000000L});
    public static final BitSet FOLLOW_32_in_ruleOptionsPage1332 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruleOptionsPage1358 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleOptionsPage1370 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleOptionsPage1387 = new BitSet(new long[]{0x0000000020000030L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleOptionsPage1409 = new BitSet(new long[]{0x0000000020000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleOptionsPage1440 = new BitSet(new long[]{0x0000000020000030L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleOptionsPage1458 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleOptionsPage1478 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOptionType_in_entryRuleOptionType1514 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOptionType1524 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_33_in_ruleOptionType1562 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_ruleStringOption_in_ruleOptionType1587 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_34_in_ruleOptionType1606 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_ruleTextOption_in_ruleOptionType1631 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_35_in_ruleOptionType1650 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_ruleURLOption_in_ruleOptionType1675 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_36_in_ruleOptionType1694 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_ruleIntegerOption_in_ruleOptionType1719 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_37_in_ruleOptionType1738 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_ruleFloatOption_in_ruleOptionType1763 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_38_in_ruleOptionType1782 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_ruleRangeOption_in_ruleOptionType1807 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_39_in_ruleOptionType1826 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_ruleSelectOption_in_ruleOptionType1851 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_40_in_ruleOptionType1870 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_ruleChoiceOption_in_ruleOptionType1895 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_41_in_ruleOptionType1914 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_ruleBooleanOption_in_ruleOptionType1939 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_42_in_ruleOptionType1958 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_ruleDateOption_in_ruleOptionType1983 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_43_in_ruleOptionType2003 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_44_in_ruleOptionType2021 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_ruleColourOption_in_ruleOptionType2047 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_45_in_ruleOptionType2066 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_ruleCustomOption_in_ruleOptionType2091 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFloatOption_in_entryRuleFloatOption2127 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFloatOption2137 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_ruleFloatOption2187 = new BitSet(new long[]{0x0003000100024000L});
    public static final BitSet FOLLOW_ruleDefaultOptionParam_in_ruleFloatOption2209 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_47_in_ruleFloatOption2222 = new BitSet(new long[]{0x0002000100024000L});
    public static final BitSet FOLLOW_ruleDefaultOptionParam_in_ruleFloatOption2243 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_48_in_ruleFloatOption2259 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRangeOption_in_entryRuleRangeOption2297 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRangeOption2307 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_ruleRangeOption2357 = new BitSet(new long[]{0x0003000100024000L});
    public static final BitSet FOLLOW_ruleDefaultOptionParam_in_ruleRangeOption2379 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_47_in_ruleRangeOption2392 = new BitSet(new long[]{0x0002000100024000L});
    public static final BitSet FOLLOW_ruleDefaultOptionParam_in_ruleRangeOption2413 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_48_in_ruleRangeOption2429 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSelectOption_in_entryRuleSelectOption2469 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSelectOption2479 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_ruleSelectOption2529 = new BitSet(new long[]{0x0003000100024020L});
    public static final BitSet FOLLOW_ruleSelectParam_in_ruleSelectOption2551 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_47_in_ruleSelectOption2564 = new BitSet(new long[]{0x0002000100024020L});
    public static final BitSet FOLLOW_ruleSelectParam_in_ruleSelectOption2585 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_48_in_ruleSelectOption2601 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleChoiceOption_in_entryRuleChoiceOption2639 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleChoiceOption2649 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_ruleChoiceOption2699 = new BitSet(new long[]{0x0003000100024020L});
    public static final BitSet FOLLOW_ruleChoiceParam_in_ruleChoiceOption2721 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_47_in_ruleChoiceOption2734 = new BitSet(new long[]{0x0002000100024020L});
    public static final BitSet FOLLOW_ruleChoiceParam_in_ruleChoiceOption2755 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_48_in_ruleChoiceOption2771 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleURLOption_in_entryRuleURLOption2809 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleURLOption2819 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_ruleURLOption2869 = new BitSet(new long[]{0x0003000100024000L});
    public static final BitSet FOLLOW_ruleDefaultOptionParam_in_ruleURLOption2891 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_47_in_ruleURLOption2904 = new BitSet(new long[]{0x0002000100024000L});
    public static final BitSet FOLLOW_ruleDefaultOptionParam_in_ruleURLOption2925 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_48_in_ruleURLOption2941 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIntegerOption_in_entryRuleIntegerOption2979 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleIntegerOption2989 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_ruleIntegerOption3039 = new BitSet(new long[]{0x0003000100024000L});
    public static final BitSet FOLLOW_ruleDefaultOptionParam_in_ruleIntegerOption3061 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_47_in_ruleIntegerOption3074 = new BitSet(new long[]{0x0002000100024000L});
    public static final BitSet FOLLOW_ruleDefaultOptionParam_in_ruleIntegerOption3095 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_48_in_ruleIntegerOption3111 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBooleanOption_in_entryRuleBooleanOption3149 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBooleanOption3159 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_ruleBooleanOption3209 = new BitSet(new long[]{0x0003000100024000L});
    public static final BitSet FOLLOW_ruleDefaultOptionParam_in_ruleBooleanOption3231 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_47_in_ruleBooleanOption3244 = new BitSet(new long[]{0x0002000100024000L});
    public static final BitSet FOLLOW_ruleDefaultOptionParam_in_ruleBooleanOption3265 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_48_in_ruleBooleanOption3281 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDateOption_in_entryRuleDateOption3319 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDateOption3329 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_ruleDateOption3379 = new BitSet(new long[]{0x0003000100024000L});
    public static final BitSet FOLLOW_ruleDefaultOptionParam_in_ruleDateOption3401 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_47_in_ruleDateOption3414 = new BitSet(new long[]{0x0002000100024000L});
    public static final BitSet FOLLOW_ruleDefaultOptionParam_in_ruleDateOption3435 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_48_in_ruleDateOption3451 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleColourOption_in_entryRuleColourOption3489 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleColourOption3499 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_ruleColourOption3549 = new BitSet(new long[]{0x0003000100024000L});
    public static final BitSet FOLLOW_ruleDefaultOptionParam_in_ruleColourOption3571 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_47_in_ruleColourOption3584 = new BitSet(new long[]{0x0002000100024000L});
    public static final BitSet FOLLOW_ruleDefaultOptionParam_in_ruleColourOption3605 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_48_in_ruleColourOption3621 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCustomOption_in_entryRuleCustomOption3659 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCustomOption3669 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_ruleCustomOption3719 = new BitSet(new long[]{0x0043000100024020L});
    public static final BitSet FOLLOW_ruleCustomParam_in_ruleCustomOption3741 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_47_in_ruleCustomOption3754 = new BitSet(new long[]{0x0042000100024020L});
    public static final BitSet FOLLOW_ruleCustomParam_in_ruleCustomOption3775 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_48_in_ruleCustomOption3791 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStringOption_in_entryRuleStringOption3829 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleStringOption3839 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_ruleStringOption3889 = new BitSet(new long[]{0x0033000100024000L});
    public static final BitSet FOLLOW_ruleStringParam_in_ruleStringOption3911 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_47_in_ruleStringOption3924 = new BitSet(new long[]{0x0032000100024000L});
    public static final BitSet FOLLOW_ruleStringParam_in_ruleStringOption3945 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_48_in_ruleStringOption3961 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTextOption_in_entryRuleTextOption3999 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTextOption4009 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_ruleTextOption4059 = new BitSet(new long[]{0x003B000100024000L});
    public static final BitSet FOLLOW_ruleTextParam_in_ruleTextOption4081 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_47_in_ruleTextOption4094 = new BitSet(new long[]{0x003A000100024000L});
    public static final BitSet FOLLOW_ruleTextParam_in_ruleTextOption4115 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_48_in_ruleTextOption4131 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDefaultOptionParam_in_entryRuleDefaultOptionParam4169 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDefaultOptionParam4179 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_32_in_ruleDefaultOptionParam4235 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_49_in_ruleDefaultOptionParam4268 = new BitSet(new long[]{0x0004000000000010L});
    public static final BitSet FOLLOW_50_in_ruleDefaultOptionParam4281 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleDefaultOptionParam4300 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_14_in_ruleDefaultOptionParam4325 = new BitSet(new long[]{0x0004000000000010L});
    public static final BitSet FOLLOW_50_in_ruleDefaultOptionParam4338 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleDefaultOptionParam4357 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_17_in_ruleDefaultOptionParam4382 = new BitSet(new long[]{0x0004000000000010L});
    public static final BitSet FOLLOW_50_in_ruleDefaultOptionParam4395 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleDefaultOptionParam4414 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTextParam_in_entryRuleTextParam4458 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTextParam4468 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStringParam_in_ruleTextParam4518 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_51_in_ruleTextParam4541 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStringParam_in_entryRuleStringParam4590 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleStringParam4600 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDefaultOptionParam_in_ruleStringParam4650 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_52_in_ruleStringParam4668 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleStringParam4685 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_53_in_ruleStringParam4710 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleStringParam4727 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSelectParam_in_entryRuleSelectParam4769 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSelectParam4779 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDefaultOptionParam_in_ruleSelectParam4829 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleChoiceFn_in_ruleSelectParam4855 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleChoiceParam_in_entryRuleChoiceParam4891 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleChoiceParam4901 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDefaultOptionParam_in_ruleChoiceParam4951 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleChoiceFn_in_ruleChoiceParam4977 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCustomParamFn_in_entryRuleCustomParamFn5013 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCustomParamFn5023 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleCustomParamFn5065 = new BitSet(new long[]{0x0004000000000000L});
    public static final BitSet FOLLOW_50_in_ruleCustomParamFn5082 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleCustomParamFn5099 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCustomParam_in_entryRuleCustomParam5140 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCustomParam5150 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDefaultOptionParam_in_ruleCustomParam5200 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_54_in_ruleCustomParam5218 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleCustomParam5235 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCustomParamFn_in_ruleCustomParam5268 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleChoiceFn_in_entryRuleChoiceFn5306 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleChoiceFn5316 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleChoiceFn5358 = new BitSet(new long[]{0x0004000000000012L});
    public static final BitSet FOLLOW_50_in_ruleChoiceFn5377 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleChoiceFn5396 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOption_in_entryRuleOption5439 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOption5449 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleOption5491 = new BitSet(new long[]{0x00003FFE00000000L});
    public static final BitSet FOLLOW_ruleOptionType_in_ruleOption5517 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFunctionType_in_entryRuleFunctionType5553 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFunctionType5563 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_55_in_ruleFunctionType5620 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_56_in_ruleFunctionType5657 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_57_in_ruleFunctionType5694 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_58_in_ruleFunctionType5731 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_59_in_ruleFunctionType5769 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_46_in_ruleFunctionType5794 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleFunctionType5811 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_47_in_ruleFunctionType5829 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleFunctionType5846 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_47_in_ruleFunctionType5864 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleFunctionType5881 = new BitSet(new long[]{0x0001000000000000L});
    public static final BitSet FOLLOW_48_in_ruleFunctionType5902 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_60_in_ruleFunctionType5930 = new BitSet(new long[]{0x0000400000000002L});
    public static final BitSet FOLLOW_46_in_ruleFunctionType5956 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleFunctionType5973 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_47_in_ruleFunctionType5991 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleFunctionType6008 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_48_in_ruleFunctionType6027 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFunction_in_entryRuleFunction6066 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFunction6076 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFunctionType_in_ruleFunction6126 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleFunction6142 = new BitSet(new long[]{0x0000000010000022L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleFunction6164 = new BitSet(new long[]{0x0000000010000002L});
    public static final BitSet FOLLOW_28_in_ruleFunction6183 = new BitSet(new long[]{0x0000000020000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleFunction6200 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleFunction6218 = new BitSet(new long[]{0x0000000000000002L});

}